A try-catch statement redirects control when code in its try region throws a matching exception. Runtime unwinding searches the call stack for an appropriate catch clause; without one, the program crashes. section 12.1
The source-code boundary is not the runtime boundary. Event-handler lambdas and continuations execute later in compiler-generated or callback methods, so exceptions thrown there do not reach the surrounding try block. Catch them where that deferred code runs, or propagate them explicitly. section 12.1









