C ++,Java和JavaScript异常处理有什么区别?

时间:2010-05-25 11:10:38

标签: java javascript c++ exception exception-handling

它们是非常不同的语言,它们处理异常的方式可能会有所不同。如何实现异常处理以及这些语言中的实现差异是什么?

我也在问这个问题,因为我注意到与JavaScript版本相比,C ++异常处理似乎非常慢。

3 个答案:

答案 0 :(得分:2)

我在此页面上找到了有关异常处理和性能/实现的最详细答案: http://lazarenko.me/tips-and-tricks/c-exception-handling-and-performance

答案 1 :(得分:1)

我只知道C ++异常处理的基础知识,但据我所知,Java有异常的基于Object的异常层次结构(ThrowableException,{{3} },RuntimeException)在C ++中你可以做到

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

这当然反映了您的类结构和一般异常处理策略等的设计。

这个看似微小的差异引入的其他差异是C ++实际上只有Java世界中的运行时异常,这意味着您可以随时抛出任何内容而无需显式编写代码来处理throw伪异常( 我不愿意将int或任何其他原始类型称为异常,它们可能只是异常值)。

最后,由于它们的性质与Java的异常相比,C ++异常不会默认包含与Java的堆栈跟踪相当的东西。

答案 2 :(得分:1)

如果您在询问内部如何生成这些异常,那么这是一个非常复杂的问题。

一种方法(我认为C ++和Java使用,我不知道Javascript),是维护一堆错误处理程序。抛出异常时,顶部条目将从堆栈中弹出并相应地处理异常,或者如果无法处理它,则从堆栈中弹出另一个条目(例如,当顶部处理程序为OutOfBoundException时,它会收到NullPointerException)。