


# FidlErrorCode enum










**Inheritance**

- Object
- Enum
- FidlErrorCode






## Constructors

[FidlErrorCode](../package-fidl_fidl/FidlErrorCode/FidlErrorCode.md) ()

  _const_ 


## Values

##### [unknown](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlExceededMaxOutOfLineDepth](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlInvalidBoolean](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlInvalidPresenceIndicator](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlInvalidNumBytesInEnvelope](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlInvalidNumHandlesInEnvelope](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlInvalidInlineMarkerInEnvelope](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlTooFewBytes](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlTooManyBytes](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlTooFewHandles](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlTooManyHandles](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlStringTooLong](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlNonNullableTypeWithNullValue](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlStrictUnionUnknownField](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlUnknownMagic](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlInvalidBit](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlInvalidEnumValue](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlIntOutOfRange](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlNonEmptyStringWithNullBody](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlNonEmptyVectorWithNullBody](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlNonResourceHandle](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlMissingRequiredHandleRights](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlIncorrectHandleType](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlInvalidInlineBitInEnvelope](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlCountExceedsLimit](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlInvalidPaddingByte](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  




##### [fidlUnrecognizedTransportErr](../package-fidl_fidl/FidlErrorCode.md) const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  





## Properties

##### [hashCode](../package-fidl_fidl/FidlErrorCode/hashCode.md) &#8594; int



The hash code for this object.  
_read-only, inherited_



##### [index](../package-fidl_fidl/FidlErrorCode/index.md) &#8594; int



A numeric identifier for the enumerated value.  
_read-only, inherited_



##### [runtimeType](../package-fidl_fidl/FidlErrorCode/runtimeType.md) &#8594; Type



A representation of the runtime type of the object.  
_read-only, inherited_





## Methods

##### [noSuchMethod](../package-fidl_fidl/FidlErrorCode/noSuchMethod.md)(Invocation invocation) dynamic



Invoked when a non-existent method or property is accessed.  
_inherited_



##### [toString](../package-fidl_fidl/FidlErrorCode/toString.md)() String



A string representation of this object.  
_inherited_





## Operators

##### [operator ==](../package-fidl_fidl/FidlErrorCode/operator_equals.md)(Object other) bool



The equality operator.  
_inherited_










## Constants

##### [values](../package-fidl_fidl/FidlErrorCode/values-constant.md) const List&lt;[FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)>



A constant List of the values in this enum, in order of their declaration.  









