Результат работы программы в исключительной ситуации (исходный файл не найден):
В данной программе наряду с объектом text класса String был использован объект str класса StringBuffer, так как этот класс имеет метод reverse() для переворачивания строк.
В любой программе, даже самой правильной, не имеющей синтаксических ошибок, могут возникнуть ошибки другого рода. Эти ошибки не связаны с синтаксисом программного кода, а связаны с алгоритмом выполнения программы: деление на ноль, выход за пределы массива, переполнение стека при рекурсии. Конечно, лучше отслеживать такие ошибки еще на стадии составления кода программы, то есть предусмотреть такие ситуации и застраховаться от них. Для этого можно использовать проверку выхода значений необходимых переменных за заданный диапазон:
{
}
На это уходит много времени, а сама программа превращается в набор таких проверок. Любая производственная программа, написанная на алгоритмических языках С или Pascal, состоит на 2/3 из них. Конечно, все случаи предусмотреть нельзя, поэтому рано или поздно какая-нибудь ошибочная ситуация приведет к аварийному завершению программы.
Внимание! Программа должна завершать работу, когда это нужно программисту, а не когда
она этого захочет!
В Java для таких целей существует специальное средство – обработка исключительных ситуаций.
Исключительная ситуация – это ошибка, которая возникает при выполнении программы.
Исключение – это объект, который описывает исключительную ситуацию (ошибку).
При обработке ошибки используется бейсбольная терминология (ну как же, америкосы!). Говорят, что программа выбрасывает (throws) объект-исключение, если произошла исключительная ситуация. Этот объект пролетает через всю программу, появившись сначала в том методе, где произошла ошибка. Программа в одном или нескольких местах пытается (try) его перехватить (catch) и обработать. Для того, чтобы попытаться (try) перехватить объект-исключение, нужно весь код программы, в котором может возникнуть исключительная ситуация, охватить операторами: