Каково различие между C++, Java и обработкой исключения JavaScript?

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

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

6
задан Dpp 25 May 2010 в 11:10
поделиться

2 ответа

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

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

1
ответ дан 17 December 2019 в 07:01
поделиться

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

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

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

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

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

1
ответ дан 17 December 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: