Revert using exceptions

Due to crashes. It will be reapplied once
we understand what's happening.

No functional change.