Очень интересный вопрос.Я нахожу детальную обработку исключений чрезвычайно важной, это один из источников стабильного кода.Лучшее, что вы можете сделать, это настроить каждый раз, когда общее исключение недостаточно подробное;я знаю, это звучит очевидно, но вот пример: вы можете либо сгенерировать FileNotFoundException, либо свой собственный MyFileError.
1) Разница в имени - это только первое преимущество: оно сразу говорит вам, что это один из методов в ВАШЕМ пакете, который потерпел неудачу (в отличие от десятков сторонних библиотек, которые вы будете использовать вкрупные проекты, которые, мы надеемся, также генерируют настроенные исключения, а не стандартные).
2) Еще лучше: вы можете добавлять информацию в поля MyFileError-objects: вы можете хранить строку, которая сообщает вам , которая файл, который пытался загрузить метод.
Это только очень простой пример;Подумайте об этом более развитом: вы строите банковскую систему (онлайн-банкинг или b2b).Вместо SocketError у вас есть настроенный TransactionError, в котором есть поле, в котором хранится информация о том, какая часть транзакции завершилась неудачей. В качестве примера можно привести «before-authentication» и «financialTransactionNonZero», первое из которых будет безвредным, и вы можете просто сделать системуавтоматически повторите попытку пару раз, а затем предложите пользователю проверить свою сеть;второй, однако, будет критической частью денежной транзакции: деньги были вычтены из счета владельца, но еще не назначены лицу, которому он хотел отправить деньги;в этом случае ваша система более высокого уровня должна выполнить откат (на стороне сервера) и сообщение об ошибке (на стороне клиента).
Нет ничего хуже, чем иметь такую подробную информацию на более низких уровнях, но затем использовать улов (Исключение) {System.out.println («произошла ошибка»);} на верхних уровнях.