In the Language Guide, there's a paragraph:
catchclauses don’t have to handle every possible error that the code in the
doclause can throw. If none of the
catchclauses handle the error, the error propagates to the surrounding scope. However, the propagated error must be handled by some surrounding scope. In a nonthrowing function, an enclosing
catchclause must handle the error. In a throwing function, either an enclosing
catchclause or the caller must handle the error. If the error propagates to the top-level scope without being handled, you’ll get a runtime error.
I think the last sentence should say "you'll get a compile-time error"? Unless this is referring to the top-level scope in something like Swift Playgrounds, etc, which have their own rules about what's allowed in the outer scope.