log4j проблема обработки исключений - PullRequest
2 голосов
/ 28 октября 2010

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

public class MyLog
{

   private static Logger log;

   static
   {
      log = Logger.getRootLogger();
      try
      {
            PropertyConfigurator.configure("somefileNameWhichDoesNotExist");
      }
      catch(Exception t)
      {
            System.out.println("oops logging cant be set, lets exit");
            System.exit(0);
      }

Ответы [ 4 ]

3 голосов
/ 28 октября 2010

Почему вы предполагаете, что исключение будет выдано, когда файл не существует? Я только что взглянул на документы по API, и они ничего не говорят об обработке отсутствующих файлов - так что вполне вероятно, что условие будет просто проигнорировано.


РЕДАКТИРОВАТЬ: просто прочитайте ваши дополнительные комментарии, так что это не так.

Убедитесь, что статический блок действительно выполняется.


EDIT: PropertyConfigurator перехватывает исключение и обрабатывает его внутренне. Вот почему вы не видите исключения. См. Источник - строки 370-380 .

1 голос
/ 28 октября 2010

PropertyConfigurator # configure (String configFilename) не выбрасывает ни один проверенный Исключение , поэтому с catch(Exception t) никогда ничего не поймать.Проверьте ApiDoc, потому что в предложении throws должно быть объявлено Exception, когда вы хотите перехватить Exception.

0 голосов
/ 07 июня 2012

Не могли бы вы сказать мне, нашли ответ на вопрос? Это будет очень полезно для меня.

Мое решение:

try
{
    Properties props = new Properties();
    props.load(new FileInputStream(propFilePath));
    PropertyConfigurator.configure(props);
}
catch (FileNotFoundException e)
{
    e.printStackTrace();
}
catch (IOException e)
{
    e.printStackTrace();
}

Может быть, у вас есть лучше? Большое спасибо!

0 голосов
/ 28 октября 2010

Может ли быть так, что метод configure выдает ошибку?

Измените ваш код, чтобы перехватить java.lang.Throwable (http://download.oracle.com/javase/6/docs/api/java/lang/Throwable.html) вместо Exception.

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