# ExoPlaybackException

Artifact: [androidx.media3:media3-exoplayer](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/exoplayer/ExoPlaybackException.java+class:androidx.media3.exoplayer.ExoPlaybackException)

*** ** * ** ***


```
public final class ExoPlaybackException extends PlaybackException
```

<br />

|---|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||||
| ↳ | [kotlin.Throwable](https://developer.android.com/reference/java/lang/Throwable.html) ||||
|   | ↳ | [java.lang.Exception](https://developer.android.com/reference/java/lang/Exception.html) |||
|   |   | ↳ | [androidx.media3.common.PlaybackException](https://developer.android.com/reference/androidx/media3/common/PlaybackException) ||
|   |   |   | ↳ | [androidx.media3.exoplayer.ExoPlaybackException](https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException) |

*** ** * ** ***

Thrown when a non locally recoverable playback failure occurs.

## Summary

| ### Nested types |
|---|
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi @https://developer.android.com/reference/java/lang/annotation/Documented.html @https://developer.android.com/reference/java/lang/annotation/Retention.html(value = https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html#SOURCE) @https://developer.android.com/reference/java/lang/annotation/Target.html(value = ) @https://developer.android.com/reference/androidx/annotation/IntDef(value = ) public annotation https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException.Type` The type of source that produced the error. |

| ### Constants |
|---|---|
| `static final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_REMOTE() = 3` The error occurred in a remote component. |
| `static final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER() = 1` The error occurred in a `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer`. |
| `static final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_SOURCE() = 0` The error occurred loading data from a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource`. |
| `static final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_UNEXPECTED() = 2` The error was an unexpected `https://developer.android.com/reference/java/lang/RuntimeException.html`. |

| ### Public fields |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#mediaPeriodId()` The `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId` of the media associated with this error, or null if undetermined. |
| `final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Format` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#rendererFormat()` If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`, this is the `https://developer.android.com/reference/androidx/media3/common/Format` the renderer was using at the time of the exception, or null if the renderer wasn't using a `https://developer.android.com/reference/androidx/media3/common/Format`. |
| `final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi @https://developer.android.com/reference/androidx/media3/common/C.FormatSupport https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#rendererFormatSupport()` If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`, this is the level of `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport` of the renderer for `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#rendererFormat()`. |
| `final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#rendererIndex()` If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`, this is the index of the renderer. |
| `final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#rendererName()` If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`, this is the name of the renderer. |
| `final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi @https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException.Type https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` The `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException.Type` of the playback failure. |

| ### Public methods |
|---|---|
| `static https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForRemote(java.lang.String)(https://developer.android.com/reference/java/lang/String.html message)` Creates an instance of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_REMOTE()`. |
| `static https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi [createForRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForRenderer(java.lang.Throwable,java.lang.String,int,androidx.media3.common.Format,int,boolean,int))( https://developer.android.com/reference/java/lang/Throwable.html cause, https://developer.android.com/reference/java/lang/String.html rendererName, int rendererIndex, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Format rendererFormat, @https://developer.android.com/reference/androidx/media3/common/C.FormatSupport int rendererFormatSupport, boolean isRecoverable, @https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForRenderer(java.lang.Throwable,java.lang.String,int,androidx.media3.common.Format,int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,boolean,int)` instead. <br /> |
| `static https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForRenderer(java.lang.Throwable,java.lang.String,int,androidx.media3.common.Format,int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,boolean,int)( https://developer.android.com/reference/java/lang/Throwable.html cause, https://developer.android.com/reference/java/lang/String.html rendererName, int rendererIndex, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Format rendererFormat, @https://developer.android.com/reference/androidx/media3/common/C.FormatSupport int rendererFormatSupport, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId, boolean isRecoverable, @https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode )` Creates an instance of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`. |
| `static https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForSource(java.io.IOException,int)(https://developer.android.com/reference/java/io/IOException.html cause, int errorCode)` Creates an instance of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_SOURCE()`. |
| `static https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi [createForUnexpected](https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForUnexpected(java.lang.RuntimeException))(https://developer.android.com/reference/java/lang/RuntimeException.html cause)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForUnexpected(java.lang.RuntimeException,int)` instead. <br /> |
| `static https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForUnexpected(java.lang.RuntimeException,int)( https://developer.android.com/reference/java/lang/RuntimeException.html cause, @https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode )` Creates an instance of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_UNEXPECTED()`. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#errorInfoEquals(androidx.media3.common.PlaybackException)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/PlaybackException that)` Returns whether the error data associated to this exception equals the error data associated to `other`. |
| `https://developer.android.com/reference/java/lang/Exception.html` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#getRendererException()()` Retrieves the underlying error when `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`. |
| `https://developer.android.com/reference/java/io/IOException.html` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#getSourceException()()` Retrieves the underlying error when `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_SOURCE()`. |
| `https://developer.android.com/reference/java/lang/RuntimeException.html` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#getUnexpectedException()()` Retrieves the underlying error when `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_UNEXPECTED()`. |

### Inherited Constants

From [androidx.media3.common.PlaybackException](https://developer.android.com/reference/androidx/media3/common/PlaybackException) `static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#CUSTOM_ERROR_CODE_BASE() = 1000000`

Player implementations that want to surface custom errors can use error codes greater than this value, so as to avoid collision with other error codes defined in this class.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_AUDIO_TRACK_INIT_FAILED() = 5001`

Caused by an AudioTrack initialization failure.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_AUDIO_TRACK_OFFLOAD_INIT_FAILED() = 5004`

Caused by an AudioTrack init operation failure in offload mode.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_AUDIO_TRACK_OFFLOAD_WRITE_FAILED() = 5003`

Caused by an AudioTrack write operation failure in offload mode.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_AUDIO_TRACK_WRITE_FAILED() = 5002`

Caused by an AudioTrack write operation failure.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_AUTHENTICATION_EXPIRED() = -102`

Caused by expired authentication.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_BAD_VALUE() = -3`

Caused by an argument that is illegal.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_BEHIND_LIVE_WINDOW() = 1002`

Caused by the loading position falling behind the sliding window of available live content.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_CONCURRENT_STREAM_LIMIT() = -104`

Caused by too many concurrent streams.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_CONTENT_ALREADY_PLAYING() = -110`

Caused by a request for content that was already playing.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DECODER_INIT_FAILED() = 4001`

Caused by a decoder initialization failure.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DECODER_QUERY_FAILED() = 4002`

Caused by a decoder query failure.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DECODING_FAILED() = 4003`

Caused by a failure while trying to decode media samples.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DECODING_FORMAT_EXCEEDS_CAPABILITIES() = 4004`

Caused by trying to decode content whose format exceeds the capabilities of the device.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DECODING_FORMAT_UNSUPPORTED() = 4005`

Caused by trying to decode content whose format is not supported.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DECODING_RESOURCES_RECLAIMED() = 4006`

Caused by higher priority task reclaiming resources needed for decoding.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DISCONNECTED() = -100`

Caused by a disconnected component.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DRM_CONTENT_ERROR() = 6003`

Caused by attempting to play incompatible DRM-protected content.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DRM_DEVICE_REVOKED() = 6007`

Caused by the device having revoked DRM privileges.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DRM_DISALLOWED_OPERATION() = 6005`

Caused by an operation being disallowed by a license policy.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DRM_LICENSE_ACQUISITION_FAILED() = 6004`

Caused by a failure while trying to obtain a license.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DRM_LICENSE_EXPIRED() = 6008`

Caused by an expired DRM license being loaded into an open DRM session.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DRM_PROVISIONING_FAILED() = 6002`

Caused by a failure while provisioning the device.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DRM_SCHEME_UNSUPPORTED() = 6001`

Caused by a chosen DRM protection scheme not being supported by the device.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DRM_SYSTEM_ERROR() = 6006`

Caused by an error in the DRM system.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_DRM_UNSPECIFIED() = 6000`

Caused by an unspecified error related to DRM protection.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_END_OF_PLAYLIST() = -109`

Caused by navigation that failed because the playlist was exhausted.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_FAILED_RUNTIME_CHECK() = 1004`

Caused by a failed runtime check.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_INVALID_STATE() = -2`

Caused by a command that cannot be completed because the current state is not valid.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_BAD_HTTP_STATUS() = 2004`

Caused by an HTTP server returning an unexpected HTTP response status code.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_CLEARTEXT_NOT_PERMITTED() = 2007`

Caused by the player trying to access cleartext HTTP traffic (meaning http:// rather than https://) when the app's Network Security Configuration does not permit it.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_FILE_NOT_FOUND() = 2005`

Caused by a non-existent file.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_INVALID_HTTP_CONTENT_TYPE() = 2003`

Caused by a server returning a resource with an invalid "Content-Type" HTTP header value.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_NETWORK_CONNECTION_FAILED() = 2001`

Caused by a network connection failure.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT() = 2002`

Caused by a network timeout, meaning the server is taking too long to fulfill a request.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_NO_PERMISSION() = 2006`

Caused by lack of permission to perform an IO operation.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE() = 2008`

Caused by reading data out of the data bound.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_UNSPECIFIED() = 2000`

Caused by an Input/Output error which could not be identified.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_NOT_AVAILABLE_IN_REGION() = -106`

Caused by the content being blocked due to being regionally unavailable.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_NOT_SUPPORTED() = -6`

Caused by a command that is not supported.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_PARENTAL_CONTROL_RESTRICTED() = -105`

Caused by the content being blocked due to parental controls.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_PARSING_CONTAINER_MALFORMED() = 3001`

Caused by a parsing error associated with a media container format bitstream.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED() = 3003`

Caused by attempting to extract a file with an unsupported media container format, or an unsupported media container feature.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_PARSING_MANIFEST_MALFORMED() = 3002`

Caused by a parsing error associated with a media manifest.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED() = 3004`

Caused by an unsupported feature in a media manifest.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_PERMISSION_DENIED() = -4`

Caused by a command that is not allowed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_PREMIUM_ACCOUNT_REQUIRED() = -103`

Caused by a premium account that is required but the user is not subscribed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_REMOTE_ERROR() = 1001`

Caused by an unidentified error in a remote Player, which is a Player that runs on a different host or process.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_SETUP_REQUIRED() = -108`

Caused by playback that needs manual user intervention.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_SKIP_LIMIT_REACHED() = -107`

Caused by the skip limit that is exhausted.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_TIMEOUT() = 1003`

Caused by a generic timeout.
`static final int` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_UNSPECIFIED() = 1000`

Caused by an error whose cause could not be identified.
`static final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_VIDEO_FRAME_PROCESSING_FAILED() = 7001`

Caused by a failure when processing a video frame.
`static final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_VIDEO_FRAME_PROCESSOR_INIT_FAILED() = 7000`

Caused by a failure when initializing a `https://developer.android.com/reference/androidx/media3/common/VideoFrameProcessor`.
`static final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/PlaybackException#FIELD_CUSTOM_ID_BASE() = 1000`

Defines a minimum field ID value for subclasses to use when implementing `https://developer.android.com/reference/androidx/media3/common/PlaybackException#toBundle()` and delegating to `https://developer.android.com/reference/androidx/media3/common/PlaybackException#PlaybackException(android.os.Bundle)`.

### Inherited fields

From [androidx.media3.common.PlaybackException](https://developer.android.com/reference/androidx/media3/common/PlaybackException) `final int` `@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode
https://developer.android.com/reference/androidx/media3/common/PlaybackException#errorCode()`

An error code which identifies the cause of the playback failure.
`final https://developer.android.com/reference/android/os/Bundle.html` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/PlaybackException#extras()`

An extras `https://developer.android.com/reference/android/os/Bundle.html`.
`final long` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#timestampMs()`

The value of `https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()` when this exception was created.

### Inherited methods

From [androidx.media3.common.PlaybackException](https://developer.android.com/reference/androidx/media3/common/PlaybackException) `static boolean` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/PlaybackException#areErrorInfosEqual(androidx.media3.common.PlaybackException,androidx.media3.common.PlaybackException)(
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/PlaybackException playbackException1,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/PlaybackException playbackException2
)`

Returns true if both `https://developer.android.com/reference/androidx/media3/common/PlaybackException` instances have `https://developer.android.com/reference/androidx/media3/common/PlaybackException#errorInfoEquals(androidx.media3.common.PlaybackException)` or both are null.
`static https://developer.android.com/reference/androidx/media3/common/PlaybackException` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/PlaybackException#fromBundle(android.os.Bundle)(https://developer.android.com/reference/android/os/Bundle.html bundle)`

Restores a `PlaybackException` from a `https://developer.android.com/reference/android/os/Bundle.html`.
`final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#getErrorCodeName()()`

Equivalent to `https://developer.android.com/reference/androidx/media3/common/PlaybackException#getErrorCodeName(int)`.
`static https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/androidx/media3/common/PlaybackException#getErrorCodeName(int)(@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode)`

Returns the name of a given `errorCode`.
`https://developer.android.com/reference/android/os/Bundle.html` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
@https://developer.android.com/reference/androidx/annotation/CallSuper
https://developer.android.com/reference/androidx/media3/common/PlaybackException#toBundle()()`

Returns a `https://developer.android.com/reference/android/os/Bundle.html` representing the information stored in this exception.
From [java.lang.Throwable](https://developer.android.com/reference/java/lang/Throwable.html) `synchronized final void` `https://developer.android.com/reference/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)(https://developer.android.com/reference/java/lang/Throwable.html exception)` `synchronized https://developer.android.com/reference/java/lang/Throwable.html` `https://developer.android.com/reference/java/lang/Throwable.html#fillInStackTrace()()` `synchronized https://developer.android.com/reference/java/lang/Throwable.html` `https://developer.android.com/reference/java/lang/Throwable.html#getCause()()` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/java/lang/Throwable.html#getLocalizedMessage()()` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/java/lang/Throwable.html#getMessage()()` `StackTraceElement[]` `https://developer.android.com/reference/java/lang/Throwable.html#getStackTrace()()` `synchronized final Throwable[]` `https://developer.android.com/reference/java/lang/Throwable.html#getSuppressed()()` `synchronized https://developer.android.com/reference/java/lang/Throwable.html` `https://developer.android.com/reference/java/lang/Throwable.html#initCause(java.lang.Throwable)(https://developer.android.com/reference/java/lang/Throwable.html cause)` `void` `https://developer.android.com/reference/java/lang/Throwable.html#printStackTrace()()` `void` `https://developer.android.com/reference/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])(StackTraceElement[] stackTrace)` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/java/lang/Throwable.html#toString()()`

## Constants

### TYPE_REMOTE

```
@UnstableApi
public static final int TYPE_REMOTE = 3
```

The error occurred in a remote component.

Call `https://developer.android.com/reference/java/lang/Throwable.html#getMessage()` to retrieve the message associated with the error.

### TYPE_RENDERER

```
@UnstableApi
public static final int TYPE_RENDERER = 1
```

The error occurred in a `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer`.

Call `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#getRendererException()` to retrieve the underlying cause.

### TYPE_SOURCE

```
@UnstableApi
public static final int TYPE_SOURCE = 0
```

The error occurred loading data from a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource`.

Call `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#getSourceException()` to retrieve the underlying cause.

### TYPE_UNEXPECTED

```
@UnstableApi
public static final int TYPE_UNEXPECTED = 2
```

The error was an unexpected `https://developer.android.com/reference/java/lang/RuntimeException.html`.

Call `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#getUnexpectedException()` to retrieve the underlying cause.

## Public fields

### mediaPeriodId

```
@UnstableApi
public final @Nullable MediaSource.MediaPeriodId mediaPeriodId
```

The `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId` of the media associated with this error, or null if undetermined.

### rendererFormat

```
@UnstableApi
public final @Nullable Format rendererFormat
```

If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`, this is the `https://developer.android.com/reference/androidx/media3/common/Format` the renderer was using at the time of the exception, or null if the renderer wasn't using a `https://developer.android.com/reference/androidx/media3/common/Format`.

### rendererFormatSupport

```
@UnstableApi
@C.FormatSupport
public final int rendererFormatSupport
```

If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`, this is the level of `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport` of the renderer for `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#rendererFormat()`. If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#rendererFormat()` is null, this is `https://developer.android.com/reference/androidx/media3/common/C#FORMAT_HANDLED()`.

### rendererIndex

```
@UnstableApi
public final int rendererIndex
```

If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`, this is the index of the renderer.

### rendererName

```
@UnstableApi
public final @Nullable String rendererName
```

If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`, this is the name of the renderer.

### type

```
@UnstableApi
@ExoPlaybackException.Type
public final int type
```

The `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException.Type` of the playback failure.

## Public methods

### createForRemote

```
@UnstableApi
public static ExoPlaybackException createForRemote(String message)
```

Creates an instance of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_REMOTE()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html message` | The message associated with the error. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | The created instance. |

### createForRenderer

```
@UnstableApi
public static ExoPlaybackException [createForRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForRenderer(java.lang.Throwable,java.lang.String,int,androidx.media3.common.Format,int,boolean,int))(
    Throwable cause,
    String rendererName,
    int rendererIndex,
    @Nullable Format rendererFormat,
    @C.FormatSupport int rendererFormatSupport,
    boolean isRecoverable,
    @PlaybackException.ErrorCode int errorCode
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForRenderer(java.lang.Throwable,java.lang.String,int,androidx.media3.common.Format,int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,boolean,int)` instead.

### createForRenderer

```
@UnstableApi
public static ExoPlaybackException createForRenderer(
    Throwable cause,
    String rendererName,
    int rendererIndex,
    @Nullable Format rendererFormat,
    @C.FormatSupport int rendererFormatSupport,
    @Nullable MediaSource.MediaPeriodId mediaPeriodId,
    boolean isRecoverable,
    @PlaybackException.ErrorCode int errorCode
)
```

Creates an instance of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/Throwable.html cause` | The cause of the failure. |
| `https://developer.android.com/reference/java/lang/String.html rendererName` | The `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#getName()` of the renderer in which the failure occurred. |
| `int rendererIndex` | The index of the renderer in which the failure occurred. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Format rendererFormat` | The `https://developer.android.com/reference/androidx/media3/common/Format` the renderer was using at the time of the exception, or null if the renderer wasn't using a `https://developer.android.com/reference/androidx/media3/common/Format`. |
| `@https://developer.android.com/reference/androidx/media3/common/C.FormatSupport int rendererFormatSupport` | The `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport` of the renderer for ` rendererFormat`. Ignored if `rendererFormat` is null. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId` | The `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId` of the media associated with this error, or null if undetermined. |
| `boolean isRecoverable` | If the failure can be recovered by disabling and re-enabling the renderer. |
| `@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode` | See `https://developer.android.com/reference/androidx/media3/common/PlaybackException#errorCode()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | The created instance. |

### createForSource

```
@UnstableApi
public static ExoPlaybackException createForSource(IOException cause, int errorCode)
```

Creates an instance of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_SOURCE()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/io/IOException.html cause` | The cause of the failure. |
| `int errorCode` | See `https://developer.android.com/reference/androidx/media3/common/PlaybackException#errorCode()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | The created instance. |

### createForUnexpected

```
@UnstableApi
public static ExoPlaybackException [createForUnexpected](https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForUnexpected(java.lang.RuntimeException))(RuntimeException cause)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#createForUnexpected(java.lang.RuntimeException,int)` instead.

### createForUnexpected

```
@UnstableApi
public static ExoPlaybackException createForUnexpected(
    RuntimeException cause,
    @PlaybackException.ErrorCode int errorCode
)
```

Creates an instance of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_UNEXPECTED()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/RuntimeException.html cause` | The cause of the failure. |
| `@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode` | See `https://developer.android.com/reference/androidx/media3/common/PlaybackException#errorCode()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` | The created instance. |

### errorInfoEquals

```
public boolean errorInfoEquals(@Nullable PlaybackException that)
```

Returns whether the error data associated to this exception equals the error data associated to `other`.

Note that this method does not compare the exceptions' stack traces and `https://developer.android.com/reference/androidx/media3/common/PlaybackException#extras()`.

### getRendererException

```
@UnstableApi
public Exception getRendererException()
```

Retrieves the underlying error when `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is not `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()`. |

### getSourceException

```
@UnstableApi
public IOException getSourceException()
```

Retrieves the underlying error when `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_SOURCE()`.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is not `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_SOURCE()`. |

### getUnexpectedException

```
@UnstableApi
public RuntimeException getUnexpectedException()
```

Retrieves the underlying error when `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_UNEXPECTED()`.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#type()` is not `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_UNEXPECTED()`. |