Reorganizes around try/catch to avoid clang warnings

Calling error in catch will throw, but clang doesn't know!