2013-07-31 4 views
0

Есть ли хорошая функция, собирающая все причины исключения в строке? Метод printStackTrace() собирать их с StackTraces:Java Exception toString() включительно вызывает

HighLevelException: MidLevelException: LowLevelException 
      at Junk.a(Junk.java:13) 
      at Junk.main(Junk.java:4) 
    Caused by: MidLevelException: LowLevelException 
      at Junk.c(Junk.java:23) 
      at Junk.b(Junk.java:17) 
      at Junk.a(Junk.java:11) 
      ... 1 more 
    Caused by: LowLevelException 
      at Junk.e(Junk.java:30) 
      at Junk.d(Junk.java:27) 
      at Junk.c(Junk.java:21) 
      ... 3 more 

Но я просто хочу getMessage() причин:

HighLevelException: MidLevelException: LowLevelException 
    Caused by: MidLevelException: LowLevelException 
    Caused by: LowLevelException 

Должен ли я написать свою собственную функцию?

+0

Да, вы должны. Если вы хотите, чтобы в файле журнала, в зависимости от структуры журнала, вы можете использовать правильный шаблон для регистрации исключения по своему усмотрению. –

ответ

5

Да, вы должны написать простой метод для этого

static String message(Throwable e) { 
    StringBuilder sb = new StringBuilder(); 
    sb.append(e.getMessage()); 
    Throwable t = e.getCause(); 
    while (t != null) { 
     sb.append("\nCaused by: ").append(t.getMessage()); 
     t = t.getCause(); 
    } 
    return sb.toString(); 
} 
+0

Я добавил 'sb.append (e.getMessage());' перед циклом. Думаю, вы об этом говорите? – Tala

+0

Вы получаете первый уровень, а затем следующий уровень - e.getCause(). GetCause(). –

+1

Спасибо! там была опечатка 'getCause' вместо' getMessage' – Tala

1

Вы можете создать специальное исключение и переопределить функцию GetMessage().

вот пример, где я собираю Stacktraces:

@Override 
public String getMessage() 
{ 
    for (StackTraceElement element : this.getStackTrace()){ 
       result.append(element); 
       result.append(NEW_LINE); 
      } 
      return result.toString(); 
} 

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

Смежные вопросы