В чем разница между обработкой исключений в C ++, Java и JavaScript? - PullRequest
6 голосов
/ 25 мая 2010

Это очень разные типы языков, и способ обработки исключений может быть довольно разным. Как реализована обработка исключений и чем отличаются реализации в этих языках?

Я задаю этот вопрос еще и потому, что заметил, что обработка исключений в C ++ выглядит очень медленной по сравнению с версией JavaScript.

Ответы [ 3 ]

2 голосов
/ 06 мая 2011

Самый подробный ответ, который я нашел относительно обработки и выполнения исключений, находится на этой странице: http://lazarenko.me/tips-and-tricks/c-exception-handling-and-performance

1 голос
/ 25 мая 2010

Если вы спрашиваете, как он генерирует эти исключения, это довольно сложная проблема.

Один из подходов (который, как мне кажется, используют C ++ и Java, я не знаю о Javascript), заключается в поддержке стека обработчиков ошибок. Когда генерируется исключение, верхняя запись извлекается из стека и обрабатывает исключение соответствующим образом или извлекает другую запись из стека, если она не может его обработать (например, она получила исключение NullPointerException, когда верхний обработчик является исключением OutOfBoundException).

1 голос
/ 25 мая 2010

Я знаю только основы обработки исключений в C ++, но, насколько я понимаю, в Java есть исключительная иерархия на основе Object для исключений (Throwable, Exception, RuntimeException, Error), в то время как в C ++ вы можете сделать

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

Это, конечно, отражает дизайн ваших структур классов и общееполитики обработки исключений и т. д.

Другое отличие, представленное этим, казалось бы, незначительным отличием, состоит в том, что в C ++ действительно есть только то, что известно как исключения времени выполнения в мире Java, что означает, что вы можете выбросить что угодно в любое время без явного написания кода.для обработки псевдо-исключения throw ( Я не хочу называть int или любой другой тип примитива исключением, это просто возможно исключительные значения ).

Наконец, из-заПо своей природе, по сравнению с исключениями Java, исключения C ++ по умолчанию не содержат что-либо сравнимое с трассировкой стека Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...