Разработка INTRANET приложений



Обработка исключений и легковесные процессы (потоки) - часть 2


В этом примере в блок перехвата исключения попали все операции ввода/вывода, которые выполняются через сеть. Данный пример хорош еще и тем, что показывает отсутствие разницы между вводом/выводом локальным и удаленным, и там применяются одни и те же методы, только объекты, у которых эти методы определены - разные. К этому примеру мы еще вернемся при обсуждении реализации сетевых обменов между клиентами и серверами.

Если метод не собирается перехватывать исключение, то это должно быть указано. Для этой цели служит модификатор throws:

typemethod_name (args_list) throwsexception_list { ... }

Если в предыдущем примере убрать блок try-catch, и использовать throws, то компилятор должен допустить данный исходный текст. Если не будет указано ни первое, ни второе, то код не будет оттранслирован.

Если прерывание (исключение) необходимо проигнорировать, то в этом случае в связке с try нужно использовать finally:

try { // code } catch { // code } finally { // code }

Блок finally будет выполняться до того, как исключение будет перехвачено блоком catch. Если catch нет вовсе, то сначала будет выполнен блок finally, а только потом управление будет передано обработчику исключений.

Исключения - это такие же классы, как и все остальные. Разработчик может расширить число этих классов. Однако, расширять можно только класс Exception. Для возбуждения исключения, порожденного пользователем применяется оператор throw. В приведенном примере возбуждение исключения происходит при достижении счетчиком значения 10.

classNewExeptionextendsException { privateintparm; NewException (intparm) { parm = a; } publicStringtoString () { return "valuetoolong:"+parm+"."; } } classCycle { staticvoidculc (intx) throwsNewException { inti; for (i=0;i<x;i++) { if (i==10) thrownewNewException (i); System.out.println ("i="+i+"."); } } publicstaticvoidmain (Stringargs[]) { try { culc (9); culc (20); } catch (NewExceptione) { System.out.println ("NewException."); } } }




Содержание  Назад  Вперед