Troubleshooting

I Got UNKNOWN

Verdict.UNKNOWN means traversal reached Policy.maxDepth. Increase maxDepth, inspect the throwable graph for cycles or deep wrappers, or use OnMaxDepth.THROW while debugging.

scanSuppressed Throws During Policy Construction

scanSuppressed = true requires allowAllocations = true.

val policy = Throwables.defaultPolicy.copy(
    allowAllocations = true,
    scanSuppressed = true,
)

Suppressed traversal needs allocation because suppressed exception lists are copied by platform APIs.

Interruption Was Not Restored

restoreInterruptIfNeeded only restores interruption signals that the current platform can detect. On JVM and Android this includes InterruptedException and selected interruption-related I/O and NIO exceptions. On non-JVM targets, interruption detection is currently a no-op.

A Suppressed Cause Was Not Followed

When suppressed scanning is enabled, followSuppressedCauses controls whether causes of suppressed exceptions are traversed. Set it to true when third-party code may hide abort signals inside suppressed exception causes.