Runtime errors that could have been a compile time error should always be caught at compile time. Spurious runtime errors are just as bad as null pointer accesses.
Allocating in a dtor shouldn't be a runtime or compile-time error, it should just work.