Как я могу написать пользовательские исключения?

Как создать новый Exception, отличный от предварительно созданных типов?

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

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

Ответ 1

Все, что вам нужно сделать, это создать новый class и иметь его extend Exception.

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

Примечание. Проверенный Exception - это тот, который требует, чтобы вы окружили Exception в блоке try/catch или имели предложение <<28 > объявление метода. (например, IOException) Непроверенный Exceptions может быть сброшен точно так же, как отмечено Exceptions, но вам не требуется явно обращаться с ними каким-либо образом (IndexOutOfBoundsException).

Например:

public class MyNewException extends RuntimeException {

    public MyNewException(){
        super();
    }

    public MyNewException(String message){
        super(message);
    }
}

Ответ 2

просто расширяем либо

  • Exception, если вы хотите, чтобы ваше исключение было проверено (т.е. требуется в предложении throws)
  • RuntimeException, если вы хотите, чтобы ваше исключение было отменено.

Ответ 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(){...}
}

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

Ответ 4

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

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