В 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
}
}
Вы можете попробовать и ничего не делать об этом:
public static void exceptionTest() {
makeNullPointer(); //The compiler allows me not to check this
try {
throwAnException(); //I'm forced to handle the exception, but I don't want to
} catch (Exception e) { /* do nothing */ }
}
Имейте в виду, в реальной жизни это очень опрометчивый. Что может скрывать ошибки и сохранить вы ищете собаки целую неделю, в то время как проблема была действительно кошка(ч). <суб><суп> (Давай, надень по крайней мере, системы.подстраховаться.метод println()` здесь - лесозаготовки является наилучшей практики здесь, как предложил @Бейлис.)</хлебать></суб>
Непроверенные исключения в Java продлить к RuntimeException
класса. Бросать их не будут требовать "подхватить" от своих клиентов:
// notice there's no "throws RuntimeException" at the signature of this method
public static void someMethodThatThrowsRuntimeException() /* no need for throws here */ {
throw new RuntimeException();
}
Классы, которые расширяют к RuntimeException
выиграл'т требуют "бросков" декларации, а также.
И слово из Oracle об этом:
и GT; здесь'с нижней направляющей: если клиент может разумно ожидать, чтобы оправиться от исключения, сделать это проверенное исключение. Если клиент не может сделать ничего, чтобы оправиться от исключения, сделать это исключение непроверенное.
Вы можете использовать лазейку в компиляторе Java. Добавьте следующий код:
public RuntimeException hideThrow(Throwable e) {
if (e == null)
throw new NullPointerException("e");
this.<RuntimeException>hideThrow0(e);
return null;
}
@SuppressWarnings("unchecked")
private <GenericThrowable extends Throwable> void hideThrow0(Throwable e) throws GenericThrowable {
throw (GenericThrowable) e;
}
Вы можете поймать исключение, а затем вызвать hideThrow
за исключением, чтобы бросить его незаметно компилятора. Это работает из-за стирания типа. Во время компиляции, GenericThrowable
представляет к RuntimeException
потому что это то, что мы проходим. Во время выполнения GenericThrowable
представляет подобное
, потому что это основной тип в спецификации типа параметра.
В Java есть два вида исключения, проверка исключений и исключения непроверенные.
От исключение документация:
класса Exception и любые подклассы, которые также не подклассы RuntimeException проверенные исключения. Проверяемые исключения должны быть объявлены в методе или конструкторе'ы throws пункт, если они могут быть брошенный выполнения метода или конструктора и распространить вне метода или конструктора границы.
От к RuntimeException документация:
RuntimeException суперкласс те исключения, которые могут быть брошенный во время нормальной работы виртуальной машины Java.
RuntimeException и его подклассы являются неотмеченные исключения. непроверяемые исключения не должны быть объявлены в методе или и GT; конструктор'ы throws пункт, если они могут быть брошены на выполнение метод или конструктор и вовне, метод или граница конструктор.
Есть 3 вещи, которые вы можете сделать :
Бросить к RuntimeException
(или что-то протягивая к RuntimeException
, как Поскольку
, IllegalArgumentException
,...), вы не'т иметь, чтобы поймать их, поскольку они являются неотмеченные исключения.
Поймать исключение и ничего не делать (не рекомендуется) :
публичный статический пустота exceptionTest() { makeNullPointer(); //компилятор позволяет мне не проверить это попробовать { throwAnException(); //я'м вынуждены обрабатывать исключение, но я не'т хотим, чтобы } поймать (исключение e) { // Ничего не делать } }
публичный статический пустота exceptionTest() бросает исключение { makeNullPointer(); //компилятор позволяет мне не проверить это throwAnException(); //я'м не более вынужден обрабатывать исключение }
Бросить к RuntimeException
или исключение, которое является производным от к RuntimeException
. Тогда компилятор не будет заставлять вас, чтобы поймать его.
Другие ответы являются правильными, в том, что они правильно скажут вам, что вы должны, но это на самом деле можно бросить незаявленных проверенное исключение. Есть несколько способов это может быть сделано, самое простое это:
public void methodThatSecretlyThrowsAnException() {
Thread.currentThread().stop(new Exception());
}
или если вашей целью является, чтобы обернуть существующий метод, который не объявить его исключением
public void methodThatSecretlyThrowsAnException() {
try {
methodThatAdmitsItThrowsAnException();
} catch(final Exception e) {
Thread.currentThread().stop(e);
}
}
(Излишне говорить, что вы никогда не должны делать это.)
Просто поймать исключение и не делать с ней, оставить все как есть и ловить общие исключения в случае, если вы не осведомлены о конкретных исключений
try{
//Your logic goes here
}
catch(Exception e)//Exception is generic
{
//do nothing
}
Как я знаю, это's в случае невозможно. Единственное исключение непроверенное, компилятор может пропустить, чтобы проверить. такие как RuntimeException.
Это не рекомендуется, чтобы избежать исключения с пустым блоком catch, даже если вы полностью уверены, что не собирается не при каких обстоятельствах. Иногда, мы не осознаем человеческий фактор.
Если вы уверены, что исключение-это очень маловероятно (если не невозможно), вы должны создать свое собственное исключение и завернуть непредвиденное исключение в этом.
Например:
private class UnlikelyException extends RuntimeException {
public UnlikelyException (Exception e){
super (e);
}
}
Затем обернуть ваш код с try-catch блок и выбросить исключение, которое вы не'т иметь, чтобы поймать
try {
// Your code
} catch (Exception e) {
throw new UnlikelyException(e);
}