Мой вопрос Есть ли способ реализовать метод, который работает как printStackTrace()
Я не знаю, как начать делать это действительно, возможно ли это? Это getStackTrace()
- хороший выбор для меня.Mimic printStackTrace() метод в java
0
A
ответ
2
Вот официальным способом, как это делается (формат grepcode):
646 privatevoid printStackTrace(PrintStreamOrWriter s) {
647 // Guard against malicious overrides of Throwable.equals by
648 // using a Set with identity equality semantics.
649 Set < Throwable > dejaVu =
650 Collections. newSetFromMap (newIdentityHashMap < Throwable , Boolean >());
651 dejaVu. add (this);
653 synchronized (s. lock()) {
654 // Print our stack trace
655 s. println (this);
656 StackTraceElement [] trace = getOurStackTrace();
657 for (StackTraceElement traceElement : trace)
658 s. println ("\tat " + traceElement);
660 // Print suppressed exceptions, if any
661 for (Throwable se : getSuppressed())
662 se. printEnclosedStackTrace (s, trace, SUPPRESSED_CAPTION, "\t", dejaVu);
664 // Print cause, if any
665 Throwable ourCause = getCause();
666 if (ourCause != null)
667 ourCause. printEnclosedStackTrace (s, trace, CAUSE_CAPTION, "", dejaVu);
668 }
669 }
Немного больше проблем обрабатываются, чем вы ожидали бы, но вы можете легко удалить любую из них не волнует около.
1
Если вы хотите, чтобы получить трассировку стека для любой момент, вы можете попробовать это:
Thread.currentThread().getStackTrace();// this return an array of StackTraceElement loop over in order to print them.
или если вы просто хотите, чтобы получить трассировку стека в случае исключения, просто использовать ExceptionUtils
из apache common
библиотек.
ExceptionUtils.getFullStackTrace(ex);
1
Вы можете сделать это с помощью Throwable
класса. См. Код ниже:
Метод возвращает stacktrace.
public String tracePoint()
{
String trace = "";
Throwable t = new Throwable();
StackTraceElement[] s = t.getStackTrace();
for(int i=0; i<s.length; i++)
{
trace += s[i] + "\n";
}
return trace;
}
Смежные вопросы
- 1. Что такое метод printStackTrace() в Java?
- 2. Исключение - метод printStackTrace (Printwriter s)
- 3. C# mimic Java generic?
- 4. java: Использование printStackTrace в производственной среде
- 5. Как использовать printstacktrace в Java (Eclipse, android)?
- 6. Mimic C# Действия в Java 8
- 7. Как сохранить printStackTrace в строку
- 8. Цепное исключение против PrintStackTrace
- 9. Альтернативы метода PrintStacktrace() в jsp
- 10. Mimic HTTPRequest и объект HTTPResponse в Java
- 11. printStackTrace to java.util.logging.Logger
- 12. ReferenceError: printStackTrace не определен
- 13. printStackTrace() on appengine
- 14. Mimic Intellisense
- 15. Mimic process.argv
- 16. Mimic ON_UPDATE_COMMAND_UI
- 17. Как ограничить строки кода в исключительных printStackTrace
- 18. Печать полного стека вызовов на printStackTrace()?
- 19. InterruptedException воспитывающим NullPointerException в printStacktrace j2me
- 20. Как сохранить CFEXECUTE от зависания после PrintStackTrace
- 21. Mimic C++ в структуре java и записи в байт []
- 22. правильно printstacktrace из сервлета исключения
- 23. Как реализовать printstacktrace с использованием C++, например Java
- 24. Почему printStackTrace не рекомендуется в ATG?
- 25. Mimic Python's strip() в C
- 26. Mimic JavaScript arrays в Python
- 27. Mimic Windows '' Run 'в .NET
- 28. Mimic wget в Java --no-check-certificate --secure-protocol = TLSv1
- 29. Mimic iPod application UI
- 30. Mimic ABNewPersonViewController UI
Я считаю, что сообщество решает, голосовать ли вверх/вниз, а не ОП. – bblincoe
Sysout каждая запись 'getStackTrace()'? – sp00m
Этот вопрос не соответствует теме, поскольку OP не показывает никаких усилий. –