Since the Camera library is quite big, there is a lot that can "go wrong". The react-native-vision-camera library provides thoroughly typed errors to help you quickly identify the cause and fix the problem.
```ts
switch (error.code) {
case "device/configuration-error":
console.log("Failed to configure the camera device.")
break
case "device/microphone-unavailable":
console.log("This camera device does not have a microphone.")
break
default:
console.error(error)
break
}
```
## The Error types
### `CameraError`
The `CameraError` type is a baseclass type for all other errors, and should only be used internally. It, and therefore all other error classes, provide the following properties:
*`code`: A typed code that can be used to quickly identify and group errors
*`message`: A non-localized message text that provides a more information and context about the error and possibly problematic values.
* (optional) `cause`: An `ErrorWithCause` instance that provides information about the cause of the error.
*`cause.message`: The message of the error that caused the camera error. This is localized on iOS.
* (iOS) `cause.details`: More dictionary-style information about the cause. (iOS only)
* (Android) `cause.stacktrace`: A native Java stacktrace for the cause.
* (optional) `cause.cause`: The cause that caused the given error. (Recursive)
### Runtime Errors
The `CameraRuntimeError` represents any kind of error that occured while mounting the Camera view, or an error that occured during the runtime.
The `<Camera />` UI Component provides an `onError` function that will be invoked every time an unexpected runtime error occured.