# Deep Dive — EXCEPTION > An exception handler is a decision: this error is expected and here is what we do, or it is not and it goes up with everything we know about it. `WHEN OTHERS THEN NULL` is the absence of a decision. Used in: [Chapter 7 — Exceptions](../course-plan.md) · Appendix entry: [EXCEPTION](../appendix.md#exception) · Related: [RAISE_APPLICATION_ERROR](raise_application_error.md), [PRAGMA EXCEPTION_INIT](pragma-exception_init.md), [FORMAT_ERROR_BACKTRACE](format_error_backtrace.md), [PRAGMA AUTONOMOUS_TRANSACTION](pragma-autonomous_transaction.md), [SAVEPOINT](savepoint.md), [SAVE EXCEPTIONS](save-exceptions.md) --- ## 1. What It Is and When A PL/SQL block has an optional `EXCEPTION` section. When a statement in the block raises, control jumps to the first `WHEN` clause that matches; if none matches, the exception propagates to the enclosing block, then to the caller, and eventually to the client. Handlers are the only place where "what to do about a failure" is decided — so the design question for every handler is: *is this error expected here?* - **Expected** (a lookup that may find nothing, a duplicate on an idempotent insert, a busy row on `NOWAIT`) → a **specific** handler, with a business decision in it. - **Unexpected** (everything else) → record what happened (code, message, line, context) and `RAISE` — let the caller decide, all the way up to the job that owns the transaction. ## 2. Syntax ```sql [<