Помимо того, что предопределенная исключительная ситуация может быть возбуждена исполняющей системой Java, программист сам может явно породить ошибку. Делается это с помощью оператора throw.
Например:
public int calculate(inttheValue) {
if( theValue < 0) {throw new Exception("napaMeTp для вычисления не должен быть отрицательным");} }
В данном случае предполагается, что в качестве параметра методу может быть передано только положительное значение; если это условие не выполнено, то с помощью оператора throwпорождается исключительная ситуация. (Для успешной компиляции также требуется в заголовке метода указать throws Exception — это выражение рассматривается ниже.)
Метод должен делегировать обработку исключительной ситуации вызвавшему его коду. Для этого в сигнатуре метода применяется ключевое слово throws, после которого должны быть перечислены через запятую все исключительные ситуации, которые может вызывать данный метод. То есть приведенный выше пример должен быть приведен к следующему виду:
public int calculate(int theValue) throws Exception { if( theValue < 0) {
throw new Exception{"Some descriptive info");}}
Таким образом, создание исключительной ситуации в программе выполняется с помощью оператора throw с аргументом, значение которого может быть приведено к типу Throwable.в некоторых случаях после обработки исключительной ситуации может возникнуть необходимость передать информацию о ней в вызывающий код.
В этом случае ошибка появляется вторично.
Например:
try{} catch(IOException ex) {// Обработка исключительной ситуации
// Повторное возбуждение исключительной ситуации throw ex; }
Рассмотрим еще один случай.
Предположим, что оператор throw применяется внутри конструкции try-catch.
try{
throw new lOExceptionO;
} catch (Exception e) {}
В этом случае исключение, возбужденное в блоке try, не будет передано для обработки на более высокий уровень иерархии, а обработается в пределах блока try-catch, так как здесь содержится оператор, который может это исключение перехватить. То есть произойдет неявная передача управления на соответствующий блок cacth.