Дополнительно
Можно ли игнорировать исключение?
В Java, это можно сделать метод, который имеет "бросков" заявление не проверено.
Например:
public class TestClass {
public static void throwAnException() throws Exception {
throw new Exception();
}
public static void makeNullPointer() {
Object o = null;
o.equals(0);//NullPointerException
}
public static void exceptionTest() {
makeNullPointer(); //The compiler allows me not to check this
throwAnException(); //I'm forced to handle the exception, but I don't want to
}
}
27
10
Вы можете попробовать и ничего не делать об этом:
Имейте в виду, в реальной жизни это очень опрометчивый. Что может скрывать ошибки и сохранить вы ищете собаки целую неделю, в то время как проблема была действительно кошка(ч). <суб><суп> (Давай, надень по крайней мере, системы.подстраховаться.метод println()` здесь - лесозаготовки является наилучшей практики здесь, как предложил @Бейлис.)</хлебать></суб>
Непроверенные исключения в Java продлить
к RuntimeException
класса. Бросать их не будут требовать "подхватить" от своих клиентов:Классы, которые расширяют
к RuntimeException
выиграл'т требуют "бросков" декларации, а также.И слово из Oracle об этом:
и GT; здесь'с нижней направляющей: если клиент может разумно ожидать, чтобы оправиться от исключения, сделать это проверенное исключение. Если клиент не может сделать ничего, чтобы оправиться от исключения, сделать это исключение непроверенное.
Вы можете использовать лазейку в компиляторе Java. Добавьте следующий код:
Вы можете поймать исключение, а затем вызвать
hideThrow
за исключением, чтобы бросить его незаметно компилятора. Это работает из-за стирания типа. Во время компиляции,GenericThrowable
представляетк RuntimeException
потому что это то, что мы проходим. Во время выполненияGenericThrowable
представляетподобное
, потому что это основной тип в спецификации типа параметра.В Java есть два вида исключения, проверка исключений и исключения непроверенные.
От исключение документация:
От к RuntimeException документация:
Есть 3 вещи, которые вы можете сделать :
Бросить
к RuntimeException
(или что-то протягиваяк RuntimeException
, какПоскольку
,IllegalArgumentException
,...), вы не'т иметь, чтобы поймать их, поскольку они являются неотмеченные исключения.Поймать исключение и ничего не делать (не рекомендуется) :
публичный статический пустота exceptionTest() { makeNullPointer(); //компилятор позволяет мне не проверить это попробовать { throwAnException(); //я'м вынуждены обрабатывать исключение, но я не'т хотим, чтобы } поймать (исключение e) { // Ничего не делать } }
публичный статический пустота exceptionTest() бросает исключение { makeNullPointer(); //компилятор позволяет мне не проверить это throwAnException(); //я'м не более вынужден обрабатывать исключение }
Нет, это вызывает ошибку компилятора. Будучи проверенное исключение, вы должны либо поймать его или распространить его, объявив свой способ как потенциально бросать его. Проверьте это и это.
Бросить
к RuntimeException
или исключение, которое является производным отк RuntimeException
. Тогда компилятор не будет заставлять вас, чтобы поймать его.Другие ответы являются правильными, в том, что они правильно скажут вам, что вы должны, но это на самом деле можно бросить незаявленных проверенное исключение. Есть несколько способов это может быть сделано, самое простое это:
или если вашей целью является, чтобы обернуть существующий метод, который не объявить его исключением
(Излишне говорить, что вы никогда не должны делать это.)
Просто поймать исключение и не делать с ней, оставить все как есть и ловить общие исключения в случае, если вы не осведомлены о конкретных исключений
Как я знаю, это's в случае невозможно. Единственное исключение непроверенное, компилятор может пропустить, чтобы проверить. такие как RuntimeException.
Это не рекомендуется, чтобы избежать исключения с пустым блоком catch, даже если вы полностью уверены, что не собирается не при каких обстоятельствах. Иногда, мы не осознаем человеческий фактор.
Если вы уверены, что исключение-это очень маловероятно (если не невозможно), вы должны создать свое собственное исключение и завернуть непредвиденное исключение в этом.
Например:
Затем обернуть ваш код с try-catch блок и выбросить исключение, которое вы не'т иметь, чтобы поймать