Java получает незарегистрированное исключение

#java #hadoop #exception #exception-handling

#java #hadoop #исключение #обработка исключений

Вопрос:

     public void createDirectory(String path) {
        try {
            shellSupport.executeCommand("hadoop fs -mkdir " path);
            logger.info("Directory " path " created successfully");
        } catch(Exception exc) {
            throw exc;
        }
    }
  

Ошибка

ошибка: незарегистрированное исключение исключения; должно быть перехвачено или объявлено для выброса

Если я удалю try catch, код компилируется, и регистратор показывает сообщение, но каталог не создается.

Комментарии:

1. Какой Exception класс вы на самом деле импортировали?

2. java.lang. Исключение

Ответ №1:

Если вы хотите создать исключение, вы должны объявить его в сигнатуре вашего метода. В вашем случае это было бы

 public void createDirectory(String path) throws Exception
  

Или вы могли бы перехватить его, не бросая

 try {
    shellSupport.executeCommand("hadoop fs -mkdir " path);
    logger.info("Directory " path " created successfully");
} catch(Exception exc) {
    exc.printStackTrace();
    // handle your exception
}
  

Ответ №2:

Разве недостаточно просто добавить:

 public void createDirectory(String path) throws Exception {
    try {
        shellSupport.executeCommand("hadoop fs -mkdir " path);
        logger.info("Directory " path " created successfully");
    } catch(Exception exc) {
        throw exc;
    }
}
  

То есть: public void createDirectory(String path) throws Exception к вашему методу?