Пользовательские непроверенные исключения

1

Хорошо, ребята, я пытался понять это на прошлый день или около того. В моем задании домашней работы я создал как Unchecked, так и Checked Exceptions. Проверяемые исключения, я считаю, что в основном они должны обрабатываться перед компиляцией (с помощью try & catch или бросания его на следующую вещь, которая его вызывает). Для исключенных исключений я не понимаю, как работают пользовательские. Они попадают во время выполнения и дона обязательно нужно бросать или заключать в оболочку с помощью try & catch, но если они обычны, как IDE или что-то знать, что искать? Пример: один из моих непроверенных файлов должен запускаться, если пользователь добавляет покемон, но сторона заполнена, но как я могу сообщить IDE, что это должно произойти? Мой файл Exception выглядит так:

public class PartyIsFullException extends RuntimeException {

    public PartyIsFullException() {
        super();
    }

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

а затем я хочу реализовать его в этом методе, но idk, как это сделать. Я понимаю, что я не могу их бросить, потому что пользователь не будет их ожидать и поэтому не будет пытаться их поймать.

public void addToParty(String name) throws PartyIsFullException {
        boolean exists = false;
        for (int i = 0; i < 152; i++) {
            exists = (name.equals(pokedex[i]));
        }
        if (exists) {
            throw new PokemonAlreadyExistsException();
        } else {
            if (partyPos < 6) {
            party[partyPos] = name;
            partyPos++;
            } else {
                throw new PartyIsFullException();
            }
        }
    }
  • 0
    Вы не говорите IDE, и IDE не знает.
  • 0
    «пользователь не будет ожидать их» - почему бы и нет? В вашей документации должно быть упомянуто исключение.
Показать ещё 6 комментариев
Теги:
methods
exception
unchecked-exception

2 ответа

2
Лучший ответ

Я понимаю, что я не могу их бросить, потому что пользователь не будет их ожидать и поэтому не будет пытаться их поймать.

Вы можете бросить их!

В реальном проекте он должен быть четко документирован.

/*
 * @throws PartyIsFullException if isPartyFull() would return true
 */
public void addToParty(String name) throws PartyIsFullException {...}

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

if(theParty.isPartyFull()) {
    // tell the user the party is full
    // and they can't add more Pokemon
} else {
    theParty.addToParty(thePokemon);
}

И, таким образом, им не нужно явно улавливать это, потому что они уже справляются с этим обстоятельством.

Если исключение выбрано, и на нем нет try catch, он будет полностью перекрывать поток. (Для небольшой программы с main, это означает, что программа вылетает.)

0

Хотя вы не знаете, может или не может быть выбрано определенное выборочное исключенное исключение из определенного метода, вы все равно можете его поймать (или это суперкласс Exception). Наличие настраиваемого исключения из предоставленного Java может добавить некоторые полезные сведения, специфичные для вашего исключительного случая (то есть имя исключения должно быть значимым, чтобы было легче читать ваши журналы).

Пользовательское (непроверенное) создание исключения и его контент также могут быть настроены в соответствии с вашими потребностями. Например, конструктор PartyIsFullException может принимать объект Party и форматировать его в String.

В случае, если вам не нужно облегчать создание/презентацию непроверенных исключений, RuntimeException это правильно, чтобы использовать RuntimeException предполагая, что вы предоставляете описательное сообщение.

  • 0
    Мне дали драйвер (который я не могу редактировать) для запуска после того, как я создал свои методы и исключения, и он не использует блок try и catch в методах, в которых возникают эти непроверенные исключения, поэтому я полагаю, что есть какой-то способ вызвать эти исключения , Я просто использую if else и выбрасываю непроверенное сообщение с сообщением, как я делал в моем коде выше? Или я об этом не так?
  • 0
    @Josephhooper Способ, которым вы добавляете это в своем примере кода, действителен.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню