Не удается поймать исключение FileNotFoundException при использовании DOMConfigurator - PullRequest
3 голосов
/ 19 октября 2010

У меня есть следующий код:

try {  
    DOMConfigurator.configure(url+log4j.xml);
} catch(Exception e) {   
    e.printStackTrace();   
}

И я ожидаю FileNotFoundException, если log4j.xml не существует, и тогда будет выполнен блок catch.

Но я не вижу исключения, когда файл не существует, почему это так?

Ответы [ 3 ]

2 голосов
/ 19 октября 2010

Если вы посмотрите на источник DOMConfigurator.doConfigure , похоже, что он перехватывает Exception, а затем просто регистрирует ошибку, а не сбрасывает ее.Поэтому FileNotFoundException не вернется к вашему телефонному коду.

try {
...
} catch (Exception e) {
    if (e instanceof InterruptedException || e instanceof InterruptedIOException) {
        Thread.currentThread().interrupt();
    }
    // I know this is miserable...
    LogLog.error("Could not parse "+ action.toString() + ".", e);
} 

Чтобы обойти это, вы можете предварительно проверить, существует ли файл самостоятельно.

0 голосов
/ 24 мая 2012

Если вы хотите отключить эти сообщения от log4j, вы можете установить log4j в тихом режиме:

LogLog.setQuietMode(true);
0 голосов
/ 19 октября 2010

Попробуйте перехватить Throwable вместо исключения и выполнить трассировку стека печати. Таким образом, вы можете отлавливать любые ошибки или исключения и соответственно изменять свой код.

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