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



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


Одним из важнейших элементов программирования является обработка особых ситуаций. Такие ситуации порождаются, например, делением на ноль, выходом за границы отведенной памяти или попытками записи в защищенные блоки памяти. Если в обычных языках программирования разработчик может обрабатывать эти нештатные ситуации (обычно называемые прерываниями), а может и не обрабатывать, то в Java он обязан это делать или явно указать на обработку прерываний. Все такие необычные действия в Java называются исключениями (exception).

Перехват исключений в Java оформляется блоком "try-catch". Смысл у него очень простой: сначала делается попытка выполнить фрагмент кода, и если генерируется исключение, то оно обрабатывается фрагментом catch:

try { // codeblock } catch (exception) { //exceptionexecutioncode } catch (exception) { //exceptionexecutioncode throw (exception); } finally { }

Из примера видно, что кроме try и catch при обработке прерываний могут применяться еще операторы throw и finally. Первый используется для порождения исключения, а второй для передачи обработки исключения обработчику умолчания.

Все исключения делятся на два класса Exception и Error. В корне иерархии исключений находится класс Throwable. Класс Exception содержит описания исключений, которые должны перехватываться программным кодом разработчика, если их обработка не предусмотрена в программе, то компилятор выдаст сообщение об ошибке. Например, все работы с сетью должны содержать конструкции try и catch:

importjava.net.*; importjava.io.*; importjava.applet.*; importjava.awt.*; publicclassurl_1 extendsApplet { Socketurl; InputStreamis; OutputStreamos; DataOutputStreamdos; intc; StringBuffersb = newStringBuffer (); bytebyte_b[] = newbyte[1024]; intc_l; longdate;

publicvoidinit () { try { url = newSocket ("localhost",80); is = url.getInputStream (); os = url.getOutputStream (); dos = newDataOutputStream (os); dos.writeBytes ("GET /java/test.htmHTTP/1.0\r\n\r\n"); while ( (c=is.read ())!=-1) { sb.append ( (char) c); } os.close (); is.close (); url.close (); } catch (IOExceptionee) { System.out.println ("Problemwithreading."); } add ("Center",newTextArea (sb.toString ())); } publicvoidpaint (Graphicsg) { g.drawString (sb.toString (),10,40); } }




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