Skip to content

Public API to configure a default exception handler #3978

Open
@swankjesse

Description

@swankjesse

Use case

I’m using Kotlin/JS. I’d like a public API to install a platform exception handler. As-is my uncaught exceptions are going to console.log, where they’re invisible to my observability tools. The ensurePlatformExceptionHandlerLoaded() function does what I want, but that function isn’t public!

I have tried to get my CoroutineExceptionHandler into every CoroutineContext in my application, but I’ve found it very difficult to stay on top of all of these. Especially with first- and third-party libraries that do their own coroutines things!

The Shape of the API

This multiplatform API addresses my request across all platforms.

package kotlinx.coroutines

/**
 * Invoked for uncaught exceptions thrown in CoroutineContexts that
 * don’t have a CoroutineExceptionHandler.
 * 
 * If null, a platform-specific handler will be invoked instead.
 */
val defaultCoroutineExceptionHandler: CoroutineExceptionHandler? = null

Prior Art

Java has this:

class Thread {
  public static void setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler e)
  public static UncaughtExceptionHandler getDefaultUncaughtExceptionHandler()
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions