Java в чем преимущество Throwing RuntimeException - PullRequest
2 голосов
/ 06 декабря 2011

В чем преимущество объявления (Unchecked Exception), генерирующего исключение по сигнатуре метода b / c, которое не заставляет вызывающую сторону оставаться в блоке try catch.

public void testRuntimeEx()throws RuntimeException{

if(1==1){throw new RuntimeException()}

}

//Caller method
public void testCaller(){
// not necessery to handle even caller does not known which RuntimeException might be throws then what is the benefit throws clause with method signature
testRuntimeEx(); 

}

Ответы [ 4 ]

3 голосов
/ 06 декабря 2011

Он по-прежнему служит документацией, особенно если вы не используете универсальное RuntimeException, но что-то более конкретное, например IllegalArgumentException или UnsupportedOperationException или IndexOutOfBoundsException , а также добавляете JavaDoc относительно того, когда этомогло бы произойти.

В вашем примере кода это довольно бессмысленно.

2 голосов
/ 06 декабря 2011

Это объявление является сигналом для разработчика, который использует этот код, что он генерирует исключение RuntimeException. Но это не пахнет хорошо.

P.S. Размещенный вами код не скомпилируется:

throw RuntimeException

Это неправильный бросок.

1 голос
/ 06 декабря 2011

Преимущество заключается в том, что обычно вызывающий абонент не имеет ничего общего с исключением.Ловит, оборачивает с другим исключением и снова бросает.Или, в качестве альтернативы, объявляет исключение с помощью ключевого слова throws и становится прозрачным для этого типа в случае исключения.

Я бы сказал, что описанная ситуация типична для приложений, в которых мы обычно пишем бизнес-код и имеем одно централизованное место.это обрабатывает все исключения.Это не правильно для API.Например, если вы используете библиотеку, которая реализует SSH, вы ожидаете, что она выдаст IOException (или даже более специализированное исключение), когда что-то идет не так.

0 голосов
/ 06 декабря 2011

Если вы выбрасываете пользовательское непроверенное исключение, оно становится более значимым, скорее перехватывает системное исключение, и непроверенное исключение также не заставляет перехватывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...