Вопрос по java, exception – Как я могу написать пользовательские исключения?

51

Как я могу создать новыйException отличается от готовых типов?

public class InvalidBankFeeAmountException extends Exception{
    public InvalidBankFeeAmountException(String message){
        super(message);
    }
 }

Это покажет предупреждение дляInvalidBankFeeAmountException который написан в первой строке.

Я сам создал одно Исключение, которое показано выше. Создайте класс с именем этого специального исключения и расширяет Исключение. НО у него есть предупреждение: Сериализуемый класс & lt; имя этого Exception & gt; Exception не объявляет статическое окончательное поле serialVersionUID long. Как я могу решить это ????? Johanna
но когда я использую этот класс как тип в методе main (), будет показано другое предупреждение, которое: Не может вызвать исключение типа InvalidBankFeeAmountException. Johanna
Ошибка, которую вы получаете, заставляет меня поверить, что вы неправильно расширяете исключение. jjnguy
Вы объявили это как & quot; throws InvalidBankFeeAmountException & quot ;? Michael Myers♦
Вам не нужно беспокоиться об этом предупреждении, если вы этого не хотите. Поскольку класс Exception является сериализуемым, он требует от вас установить серийный идентификатор для класса. Но, поскольку это всего лишь предупреждение, я обычно его игнорирую. jjnguy

Ваш Ответ

4   ответа
111

class и иметь этоextend Exception.

Если вы хотитеException это не проверено, вам нужноextend RuntimeException.

Note: ПровереноException это тот, который требует от вас либо окружитьException вtry/catch блокировать или иметь & apos;throws& APOS; предложение по объявлению метода. (лайкIOException) Не провереноExceptions может быть брошено так же, как провереноExceptions, но вы не обязаны явно обрабатывать их каким-либо образом (IndexOutOfBoundsException).

Например:

public class MyNewException extends RuntimeException {

    public MyNewException(){
        super();
    }

    public MyNewException(String message){
        super(message);
    }
}
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededRuntimeExceptions: If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception.
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededRuntimeExceptionError: User Rate Limit Exceeded
32

Exception, if you want your exception to be checked (i.e: required in a throws clause) RuntimeException, if you want your exception to be unchecked.
6

особенно проверенных исключений. Я рекомендую прочесть главу 9 «Эффективной Java» Джошуа Блоха и, в частности, его пункт 60 («Пользуйся использованием стандартных исключений»). Его рекомендации также включают использование проверенных исключений для исключений, из которых можно восстановить, использование непроверенных исключений (RuntimeExceptions) для ошибок программирования и предотвращение ненужного использования проверенных исключений.

Если исключение InvalidBankAccount генерируется всякий раз, когда обнаруживается программная ошибка, вы, вероятно, просто хотите вместо этого выбросить стандартную непроверенную Java IllegalStateException. (Это аккуратно обходит необходимость объявления serialVersionUID.)

3

http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=1

Пример приведен на странице 2:

public class DuplicateUsernameException
    extends Exception {
    public DuplicateUsernameException 
        (String username){....}
    public String requestedUsername(){...}
    public String[] availableNames(){...}
}

наряду с набором рекомендаций о том, когда и почему вы создаете свои собственные исключения.

Похожие вопросы