Конечно, вы можете написать код, который не использует исключения. Однако, если вы это сделаете, вы должны убедиться, что любая функция, которая может выдать ошибку, обрабатывается правильно.
Для меня самым большим преимуществом наличия исключений является то, что я могу написать простой код, который просто предполагает, что все функции выполняются успешно, зная, что верхние уровни будут заботиться о сообщениях об ошибках.
Конкретно, используйте следующую фиктивную функцию для работы с текстом в редакторе:
do-stuff:
backward-line 10
x = point
search-for "FOO"
return buffer-substring x point
И "back-line", и "search-for" могут не работать. Если бы мне пришлось самостоятельно обрабатывать ошибки, я должен был бы их проверять. Кроме того, мне пришлось бы изобрести побочный канал, чтобы сообщить своему абоненту, что произошла ошибка. Как я уже сказал, это можно сделать, но это было бы намного сложнее.