Cách đơn giản nhất để ngăn chặn các stacktrace trên bất kỳ ngoại lệ là
throwable.setStackTrace(new StackTraceElement[0]);
Nếu ngoại lệ có một nguyên nhân, bạn có thể cần phải làm như vậy một cách đệ quy.
cũng Điều này làm giảm việc tạo ra tốn kém của ngăn xếp dấu vết, càng nhiều càng tốt
Các stacktrace cho một Throwable được khởi tạo trong
Throwable#fillInStackTrace()
, được gọi bởi bất kỳ nhà xây dựng và do đó không thể tránh. Khi stacktrace thực sự được sử dụng, một StackTraceElement [] đang uể oải xây dựng vào năm
Throwable#getOurStackTrace()
mà chỉ xảy ra, nếu Throwable.stackTrace lĩnh vực không phải là đã thiết lập.
Đặt stacktrace thành bất kỳ giá trị không null nào, tránh việc xây dựng StackTraceElement [] trong Throwable # getOurStackTrace() và giảm hiệu suất phạt càng nhiều càng tốt.
Nguồn
2016-10-14 13:50:46
JVM nào? Môi trường? vv Điều này có giúp được không? http://stackoverflow.com/questions/4659151/recurring-exception-without-a-stack-trace-how-to-reset –
@SB. Có, điều này không giúp được gì. Cảm ơn rất nhiều. Tôi có một vấn đề rất giống nhau: Tôi có rất nhiều ngoại lệ (NPE). Phương thức 'error' của' log4j' ghi lại một số ngoại lệ _without_ dấu vết ngăn xếp. – Michael