Рассмотрим Википедиюhttp://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B8%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B9
> -- Цитата:
> использования исключений особенно заметно проявляется при разработке библиотек процедур и программных компонентов, ориентированных на массовое использование. В таких случаях  (), но ему это и не нужно — достаточно сгенерировать исключение, обработчик которого предоставляется реализовать пользователю компонента или процедуры. Использование исключений в целях контроля ошибок , так как , и  и использование компонентов других разработчиков....
Итак, достоинство:
1. В том, что вместо того, чтобы обработать ошибку на месте программист (ссылаясь на незнание мотивов другого программиста) перекладывает обработку на плечи "потомка" (отмазка). (При этом ссылаются на процедуру чтения из файла. Всё что нужно знать при чтении из файла, так это прочитаны данные - всё хорошо, или не прочитаны - есть ошибка. Можно, конечно, используя код ошибки передавать причину неудачи: отсутствует файл, занят другим ресурсом и т.п., но как правило для родительской программы это не важно).
2. Безусловно, читаемость кода возрастает, поскольку сразу виден опасный участок и его обработка, но это преимущество сомнительное, так как если есть проверка критических значений, то и обработка просматривается лучше. (См. мой пример со скрытой опечаткой, которую нашли исключительно благодаря безисключительномуметоду).
3. Облегчает программирование - опять отмазка.
"Что бы мне такое делать, чтобы ничего не делать" (с)

> -- Цитата:
> ... — в том, что . Поэтому в местах программы, критичных по скорости, не рекомендуют возбуждать и обрабатывать исключения, хотя следует отметить, что в реальности такие случаи крайне редки, во всяком случае, в прикладном программировании.Также в  операторов try ... finally и try ... catch (try ... except).
Недостаток со снижением скорости работы я бы назвал спорным, потому что проверка условий тоже снижает скорость работы программы, однако код поддержки механизма исключений сам по себе источник опасности (ошибок и т.п.), плюс может быть реализован неэффективно, что приведёт к значительному снижению производительности по отношению к проверкам.
На счёт больших нагромождений у меня есть подозрения, что порождения программистов недоучек, которые не могут грамотно развести исключения. Обычно стремятся отложить проверку исключений на потом, а потом в одном месте все их обработать. Без конкретного примера коментировать очень сложно.

Таким образом: имеем сомнительную пользу при явных недостатках.