![](/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.