我编写了一个 safeMethod()
,它不应该抛出任何异常,如果抛出异常,我想使应用程序崩溃(通过崩溃监控系统报告它们)。
问题是,我需要从 library callback 调用这个方法这是 wrapped in try/catch
up the call stack .
我尝试“提高赌注”:
try {
safeMethod();
} catch (Exception e) {
throw new Throwable(e);
}
但这不会编译,因为重写的方法没有声明抛出Throwable
。
我想到的另一件事是使用一些异步,例如:
new Handler().post(() -> safeMethod()); // Handler is Android class to work with thread's message queue
或
new Thread(() -> safeMethod()).start();
它确实有效,但似乎有点矫枉过正,使控制流程复杂化并浪费资源。
还有更好的方法吗?
我在这里和网上搜索了“防止捕获异常”、“覆盖 catch block ”、“强制抛出异常”等,但没有找到任何相关内容。甚至没有未回答的问题。在这种情况下,仅捕获特定异常的许多建议并不是很有用。 ;)
最佳答案
我可以建议两个选择:
- 抛出
错误
System.exit(1);
由您决定选择哪一个,主要区别在于抛出错误将为您提供堆栈跟踪,然后执行 System.exit(1)
。
使用不同于 0 的值调用 System.exit
来显示错误情况非常重要。
通常不建议抛出错误,但您的情况可能是该规则的异常(exception)。
关于java - 如何防止调用者捕获我的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65439310/