Обработка исключений Java

413
20 декабря 2016, 23:43

Доброго времени суток. Решал учебную задачу

public class Solution {
    public static StatelessBean BEAN = new StatelessBean();
    public static void main(String[] args) throws FileSystemException {
        try {
            processExceptions();
        } catch (FileSystemException f) {
              BEAN.log(f);
        }
     }
     public static void processExceptions() throws FileSystemException {
         try {
            BEAN.methodThrowExceptions();
         } catch (FileSystemException f) {
             BEAN.log(f);
             throw f;
         } catch (CharConversionException c) {
             BEAN.log(c);
         } catch (IOException i) {
             BEAN.log(i);
         }
     }
    public static class StatelessBean {
         public void log(Exception exception) {
             System.out.println(exception.getMessage() + ", " + exception.getClass().getSimpleName());
         }
         public void methodThrowExceptions() throws CharConversionException, FileSystemException, IOException {
             int i = (int) (Math.random() * 3);
             if (i == 0)
                throw new CharConversionException();
             if (i == 1)
                throw new FileSystemException("");
             if (i == 2)
                throw new IOException();
          }
    }
}

Задачу не приняли из-за того,что в сигнатуре метода main() не нужно указывать класс перекидываемого в него исключения throws FileSystemException. Объясните пожалуйста, почему так делать нельзя.

Answer 1

Ваш код не должен падать никогда. Он должен выдавать сообщение о том, что что-то пошло не так, может закрываться, но не должен говорить системе, что он сломался. Это дурной тон. Представьте, что вы создали приложение, в которое можно записать ФИО человека и его дату рождения. При парсинге даты вы обнаружили, что пользователь ввёл запятую вместо точки, и вы вместо того, чтобы выдать пользователю предупреждение / сообщение об ошибке - падаете полностью. Нехорошо получается

READ ALSO
Anchor и BottomSheet

Anchor и BottomSheet

Хочу сделать, что бы когда BottomSheet появлялся на экране, что бы поднималась и View вместе с ним, для этого использую CoordinatorLayout и Anchor, проблема в том,...

384
Пустой recycler при переносе в kotlin

Пустой recycler при переносе в kotlin

При попытке перевести мой адаптер java в kotlin возникли следующие заминки:

338
maven компиляция jar

maven компиляция jar

ЗдравствуйтеИмеется java код вроде как по защите от декомпиляции indyprotectordemo Создал jar через marven

337
Действие при клике на “Читать далее”

Действие при клике на “Читать далее”

Есть инфо-блокПри нажатии на кнопку "Читать далее" (с указателем вниз), выезжает подробный текст инфо-блока, кнопка должна менятся на "Свернуть"...

286