![](/img/trans.png)
[英]How to prevent exception catching when we need to throw custom exceptions?
[英]How to prevent caller from catching my exceptions
我写了一个safeMethod()
,它不应该抛出任何异常,如果抛出异常,我想让应用程序崩溃(通过崩溃监控系统报告它们)。
问题是,我需要从包装在try/catch
up the call stack 中的库回调中调用此方法。
我试图“加注”:
try {
safeMethod();
} catch (Exception e) {
throw new Throwable(e);
}
但这不会编译,因为重写的方法没有声明throws Throwable
。
我想到的另一件事是使用一些异步,例如:
new Handler().post(() -> safeMethod()); // Handler is Android class to work with thread's message queue
要么
new Thread(() -> safeMethod()).start();
它有效,但似乎有点矫枉过正,使控制流程复杂化并浪费资源。
有没有更好的方法?
我在这里和 web 上搜索了“防止捕获异常”、“覆盖 catch 块”、“强制抛出异常”等,但没有找到任何相关内容。 甚至没有悬而未决的问题。 在这种情况下,许多仅捕获特定异常的建议不是很有用。 ;)
我可以建议两个选项:
Error
System.exit(1);
选择哪一个取决于你,主要区别在于抛出错误会给你一个堆栈跟踪,然后执行System.exit(1)
。
使用不同于 0 的值调用System.exit
以显示错误情况很重要。
通常不建议抛出错误,但您的情况可能是该规则的例外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.