我有一个被 try/catch 块包围的代码块。 catch 块捕获我们在某些工作流程期间在代码库中看到的 SWTException。我尝试过捕获 SWTException 和通用异常,但似乎都没有 100% 捕获异常。
以下是一些代码作为示例:
private void createBrowser(BrowserInfo browserInfo) {
try {
browser.display(); // here is where the SWTException is sometimes thrown
} catch (SWTException exception) {
LOGGER.log("Error has been caught");
}
}
有时异常会被捕获,有时则不会。请记住,在堆栈跟踪中,实际上是 eclipse Browser init 方法抛出了 SWTException。
org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(SWT.java:4913)
at org.eclipse.swt.SWT.error(SWT.java:4826)
at org.eclipse.swt.SWT.error(SWT.java:4797)
at org.eclipse.swt.browser.BrowserFunction.<init>(BrowserFunction.java:135)
at org.eclipse.swt.browser.BrowserFunction.<init>(BrowserFunction.java:87)
at ..... I can't show you this stuff
at com.my.package.BrowserClass.createBrowser(BrowserClass.java:100)
我的理论是,JVM 中发生了一些奇怪的事情,使它认为我试图捕获的 SWTException 与正在抛出的 SWTException 不同。然而,除了异常没有一直被捕获这一事实之外,我没有什么可以支持这一点。
我做了很多搜索,但似乎没有什么能真正解释这种现象。
有人对我如何解决这个问题和/或导致这个问题的原因有任何想法吗?
我前段时间也遇到过,但是还没解决。因为每个用户都有一个日志文件,所以我不知道为什么我的系统级日志跑到了用户日志上。您也可以尝试搜索其他日志