Actionable Exceptions
Avishai Ish-Shalom (@nukemberg)
Exceptions are normal
"Normal exception"
By definition, exceptions are not normal
- Business errors
- System errors
- Exceptions
Either you thought it could happen, or you didn't
Exceptions are
events
Exceptions are designed to crash & burn
- Crash your thread
- Crash your program
- Inconsistent state
# cv = threading.Condition()
cv.acquire()
worker = Worker()
logger.debug("Starting work")
try:
worker.do_something()
finally:
cv.notify_all()
Spot the bug
Like "goto" but worse
- Can be thrown from anywhere
- Hard to track
- Hard to cleanup resources
- Heavyweight, slow