
On Thu, Sep 1, 2022, 9:12 PM Chris Angelico
It depends on context whether it makes sense to define a custom exception, and I agree that I frequently should define a custom exception. In that case though, it would still be nice to have an appropriate generic exception for that to inherit from, just as I would inherit from `ValueError` for a special case of a value error.
Can you describe a situation where you'd want to catch InvalidStateError from two unrelated libraries at the same time?
TBH I'm actually a bit confused as to how you'd cope with InvalidStateError anyway. In what situations would you be able to recover from such an error (other than generic "log the error and continue", which works fine with "except Exception")?
I'm +0 on this. Maybe +0.5. Making a custom error isn't hard, but inheriting from something more in the ballpark is nicer. Doing `except Exception ` feels very likely to be too broad. If my code hits ZeroDivisionError, I probably want to do something different than I do for an ended subprocess or a closed file. Maybe they all are just "log and continue," sure. But for many resources, it's possible to require them, or at least something functionally equivalent/usable. Maybe *that* subprocess ended, but I might be able to launch another with suitable behavior. Maybe *that* file handle is closed, but I can reopen the same file.