In some places it could make sense to use custom exceptions, e.g. to allow users to catch some types and continue.