簡體   English   中英

C ++,Java和JavaScript異常處理有什么區別?

[英]What is the difference between C++, Java and JavaScript exception handling?

它們是非常不同的語言,它們處理異常的方式可能會有所不同。如何實現異常處理以及這些語言中的實現差異是什么?

我也問這個問題,因為我注意到與JavaScript版本相比,C ++異常處理似乎非常慢。

我在這個頁面上找到了關於異常處理和性能/實現的最詳細的答案: http//lazarenko.me/tips-and-tricks/c-exception-handling-and-performance

我只知道C ++異常處理的基礎知識,但據我所知,Java有異常的基於Object的層次結構( ThrowableExceptionRuntimeExceptionError ),而在C ++中你可以做

try
{
     throw 1337;
}
catch (int i)
{
    // i == 1337
}

這當然反映了類結構的設計和一般異常處理策略等。

這個看似微小的差異引入的其他差異是C ++實際上只有Java世界中的運行時異常,這意味着您可以隨時拋出任何內容而無需顯式編寫代碼來處理throw偽異常( 我是不願意調用int或任何其他原始類型的異常,它們可能只是異常值 )。

最后,由於與Java的異常相比它們的性質,C ++異常默認情況下不包含與Java的堆棧跟蹤相當的東西。

如果你在詢問內部如何生成這些異常,那么這是一個非常復雜的問題。

一種方法(我認為C ++和Java使用,我不知道Javascript),是維護一堆錯誤處理程序。 拋出異常時,頂部條目將從堆棧中彈出並相應地處理異常,或者如果無法處理它,則從堆棧中彈出另一個條目(例如,當頂部處理程序為OutOfBoundException時,它會收到NullPointerException)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM