refactor ThrowableHandlers; customize expected exceptions in unit tests where possible