it's totally okay to use exceptions for error handling it depends on how you're using abstractions. e.g. EAFP in Python there are very few dogmas in software engineering - as the best architecture always depends on the operating context, environment and constraints