Java попробуйте поймать использование <br /> Хотя обработчик исключений по умолчанию, предоставленный системой времени выполнения Java, полезен для отладки, вы обычно хотите справиться с исключениями самостоятельно. Есть два преимущества для этого. Во -первых, это позволяет исправлять ошибки. Во -вторых, это предотвращает автоматическое прекращение программы. Большинство пользователей расстраиваются (если не меньше всего) по поводу печати треков стека, когда программа заканчивается и всякий раз, когда возникает ошибка. К счастью, этого легко избежать.
Чтобы предотвратить и обработать ошибку времени выполнения, вам просто нужно поместить код, который вы хотите контролировать в блок Try. Следуя блоку Try, включая пункт о ущербе, который указывает тип ошибки, которую вы хотите поймать. Очень просто выполнить эту задачу.
Класс Exc2 {static void main (string args []) Отпечатано. ");} catch (arithmeticexception e) {// catch divide-by-re-raino system.out.println (" Division By Zero. ");} System.out.println (" После CTCH оператор. ") ; Программа выводит следующее:
Подразделение по ноль. После уловки.
Обратите внимание, что вызов println () в блоке Try никогда не выполняется. Как только исключение поднимается, управление программой передается из блока Try в блок улова. Исполнение никогда не «возвращается» из блока улова в блок Try. Итак, «это не будет напечатано».
Не будет отображаться. Как только оператор Catch будет выполнена, управление программой продолжается со следующей строки всего механизма TRY/Catch.
Попробуйте и его оператор с уловами образуют устройство. Объем пункта оговорки ограничен утверждением, определенным перед оператором TRY. Заявление о выводе не может поймать исключение, поднятое другим оператором TRY (если это не вложенное дело TRY).
Заявления, защищенные TRY, должны быть в рамках скобки (то есть они должны быть в блоке). Вы не можете использовать попробовать в одиночестве.
Целью построения пункта о уловах является разрешение исключений и продолжать работать, как если бы ошибка не произошла. Например, в следующей программе каждый для цикла повторяется для получения двух случайных целых чисел. Эти два целых числа разделены на другую сторону соответственно, и результат используется для разделения 12345. Окончательный результат существует в. Если операция деления приведет к ошибке нулевого деления, она будет захвачена, значение A установлено на ноль, а программа продолжает работать.
// Обработка исключения и перемещаться. ); {System.out.println ("Разделение по ноль");Показать описание исключения
Выбросить перегрузку метода toString () (определяется объектом), поэтому он возвращает строку, содержащую описание исключения. Вы можете отобразить описание исключения, передавая параметр исключению в println (). Например, блок улова предыдущей программы может быть переписан как
Catch (arithmeticexception e) {System.out.println ("Исключение:" + e); Когда эта версия заменяет версию в исходной программе, программа работает под стандартным интерпретатором JavaJDK, и каждая ошибка делится на ноль, отображает следующее сообщение:
Исключение: java.lang.arithmeticexception: / by Zero
Хотя в контексте нет особых значений, способность отображать описание исключения ценна в других случаях, особенно когда вы экспериментируете и отлаживают исключение.
Использование Java -оператора Multy Catch <Br /> В некоторых случаях многочисленные исключения могут быть вызваны одним сегментом кода. Чтобы справиться с этой ситуацией, вы можете определить два или более предложений по уловам, каждый из которых вызывает исключение из одного типа. Когда исключение поднимается, каждое предложение по уловке проверяется в последовательности, а первое предложение, соответствующее типу исключения. При выполнении оператора Catch, другие предложения обходится, и выполнение продолжается из кода после блока Try/Catch. В следующем примере проектирует два разных типа исключений:
// демонстрировать несколько операторов. ; int c [] = {1}; out .println ("Индекс массива oob:" + e);Программа работает в исходном условии без параметров командной строки, что приводит к исключению с нулевым возражением, потому что A равен 0. Если вы предоставите параметр командной строки, он выживет, установите значение A на значение, превышающее ноль. Но это приведет к исключению ArrayIndexoutof Boundsexception, потому что целочисленное массив C составляет 1 в длину, а программа пытается назначить значение C [42].
Вот результат программы, работающей в двух разных ситуациях:
C:/> java multicatcha = 0divide по 0: java.lang.arithmeticexception:/by Zero после Try/catch blocks.c:/> java multicatch testarga = 1Array index oob: j ava.lang.arrayindexoutofboundsexception после блоков Try/catch.
Когда вы используете многочисленную операцию, важно помнить, что подклассы исключения должны использоваться перед любым из их родительских классов. Это связано с тем, что использование оператора улова родительского класса поймает исключения для типа и всех типов подкласса. Таким образом, если подкласс находится за родительским классом, подкласс никогда не прибудет. Более того, код, который не может быть достигнут в Java, является ошибкой. Например, рассмотрим следующую процедуру:
/* Эта программа содержит ошибку. Подкласс должен представить его суперкласс в серии операторов Catch. args []) {try {int a = 0; Rithmeticexception - это подкласс исключения.Если вы попытаетесь скомпилировать программу, вы получите сообщение об ошибке, что второй оператор Catch не будет появится, потому что исключение было поймано. Поскольку arithmeticexception является подклассом исключения, первый оператор Catch будет обрабатывать все ошибки, ориентированные на исключение, включая Arithmeticexception. Это означает, что второй оператор Catch никогда не будет выполнен. Чтобы изменить программу, отмените порядок двух операторов Catch.