Я собираюсь ответить на ваши вопросы по очереди, затем добавлю несколько комментариев в конце. Я не специалист по обработке исключений, но я надеюсь, что мои комментарии полезны.
«Разве первый способ обработки исключений не делает именно это?»
Мой ответ - да, так как вы описываете его, первый метод работает, выбрасывая и перехватывая исключение в том же методе. Однако я не знаю, что try-throw-catch должен работать так, как вы его описываете.
"Я читал, что лучше создавать исключение в одном методе и перехватывать его в другом методе, но это только один (возможно, лучший) способ. Другой способ также является законным и правильным, не так ли?" не так ли? "
Я согласен, что ловить исключения из второго метода лучше, но первый способ законен. Это правильно? что ж, решать вам, это ведь ваш код.
По большей части я согласен с тем, что не имеет смысла бросать исключение, а затем сразу же перехватывать это исключение тем же методом. Если мы сделаем это, потому что метод особенно длинный / сложный, а обработка ошибки с использованием другой логики усложнит ситуацию, я бы предложил перенести часть этой логики в другой метод, вызвать этот метод и перехватить его исключение.
Если наш код более прост, то, возможно, будет легко обработать ошибку, используя код, который не состоит в создании исключения.
Мои комментарии:
Упомянутому выше механизму try-throw-catch может не понадобиться исключение для того же метода. Я должен был бы прочитать текст, который вы нашли наверняка, но я ожидаю, что это не обязательно. Если исключение не требуется для исключения в том же методе, то ваша стратегия обработки исключений представляет собой комбинацию 1) и 2).
В комбо, один метод будет использовать механизм try-throw-catch для перехвата исключения, вызванного вызываемым методом. Мне кажется, что 1) и 2) должны работать вместе, чтобы сформировать вашу стратегию обработки исключений.
Теперь, может быть, кто-то придет и даст нам несколько замечательных причин, по которым мы можем захотеть создать исключение тем же методом. Я ожидаю, что они есть, но для меня они кажутся исключением, а не правилом.
Ура,
Ed