Можно ли здесь удалить "throw IllegalArgumentException" из заголовка? - PullRequest
0 голосов
/ 31 марта 2019

Мне интересно, смогу ли я удалить исключение IllegalArgumentException в заголовке этого метода, добавить его в тело метода и все равно сделать так же?

Спасибо!

public Card(int value, String suit) throw IllegalArgumentException {
    LinkedList<String> suits = new LinkedList<>(Arrays.asList("spades", "hearts", "diamonds", "clubs"));//all suits in the lower case
    if(value >= 1 && value <= 13 && suits.contains(suit.toLowerCase())) {
        this.value = value;
        this.suit = suit;
    } else {
        throw new IllegalArgumentException("Illegal suit-value combination");//throw exception in case value or suit is wrong
    }
}

1 Ответ

2 голосов
/ 31 марта 2019

Вам не нужно явно объявлять RuntimeException в объявлении метода.Поскольку IllegalArgumentException является RuntimeException, вы можете удалить его.

Из официальной документации :

Исключения во время выполнения могут возникнуть в любом месте программы,и в типичном они могут быть очень многочисленными.Необходимость добавлять исключения времени выполнения в каждое объявление метода уменьшит ясность программы.Таким образом, компилятор не требует, чтобы вы перехватывали или указывали исключения во время выполнения (хотя вы можете это сделать).

Вы можете упомянуть это жестко в разделе JavaDoc метода.Это дает потребителю подсказку о любых непроверенных исключениях.Также распространено добавлять эту информацию косвенно к параметрам.

/**
  * @throws IllegalArgumentException if the suite combination is illegal
  */

/**
  * @param myParam the param, must not be null
  */

Проверка параметров часто включает в себя выдачу IllegalArgumentException, если один параметр не соответствует требованиям.Так как они перечислены в JavaDoc (здесь не нуль ), это ошибка программиста, если он передает null.

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