Skip to main content

How to determine if an "Unhandled Error" in Sentry actually caused a crash

Issue

I see events labeled as unhandled in Sentry, and I cannot tell whether those errors crashed the app or only reported an uncaught exception while the app kept running.

Applies To

  • All SaaS Customers and Self-Hosted Users

  • Error Monitoring

  • Release Health

Resolution

An unhandled error does not always mean the application crashed.

In Sentry:

  • Unhandled means the exception was not caught by your application code (for example, it was outside a normal try/catch).

  • Crash means the application had a hard crash and the process ended.

Some runtimes and frameworks (for example Flutter, Unity, Xamarin, or .NET MAUI) can surface unhandled errors without terminating the process. In those cases, Sentry can still mark the event as unhandled even though the app kept running.

How to tell them apart

  1. Open the event and check mechanism.handled.
    If it is false, the error is unhandled. That alone does not prove a crash.

  2. Check the event level and exception mechanism.
    A fatal level or a native crash mechanism is a stronger crash signal, but level behavior depends on the SDK and platform.

  3. If you use Release Health, check the session status for that release.

    • crashed: hard crash

    • unhandled: unhandled error where the language or framework prevented process termination
      Supported SDKs track unhandled separately from crashed. See the Release Health documentation.

If unhandled errors are lowering crash-free rate on Flutter even when the app does not crash, see [Flutter] Unhandled errors are lowering the crash-free rate.

Did this answer your question?