


# FidlError class















**Implementers**

- [FidlRangeCheckError](../package-fidl_fidl/FidlRangeCheckError-class.md)
- [FidlStateException](../package-fidl_fidl/FidlStateException-class.md)
- [FidlUnrecognizedTransportErrorError](../package-fidl_fidl/FidlUnrecognizedTransportErrorError-class.md)





## Constructors

[FidlError](../package-fidl_fidl/FidlError/FidlError.md) (String message, [[FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md) code = FidlErrorCode.unknown])

  _const_ 


## Properties

##### [code](../package-fidl_fidl/FidlError/code.md) &#8594; [FidlErrorCode](../package-fidl_fidl/FidlErrorCode.md)



  
_final_



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



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



##### [message](../package-fidl_fidl/FidlError/message.md) &#8594; String



  
_final_



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



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





## Methods

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



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



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



A string representation of this object.  
_override_





## Operators

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



The equality operator.  
_inherited_















