refactoring: exceptions

removed abort(), unreachable code after throw, made use of what(), etc.
refactoring: exceptions

messages, dead code, remove {} around single throw statements