Exception is a graceful shutdown, as it calls destructors & finally blocks while unrolling the stack.
You're assuming the program uses finally/scope exit blocks to do shutdown logic. This is not always the case. A library shouldn't force certain development styles.
-Steve