C++ 异常机制问题之捕获异常的问题如何解决

简介: C++ 异常机制问题之捕获异常的问题如何解决

问题一:如果在main()中没有匹配的catch语句会发生什么?

如果在main()中没有匹配的catch语句会发生什么?


参考回答:

如果在main()中没有匹配的catch语句,异常会继续向上回溯栈帧,寻找更上层的catch语句。如果一直找不到匹配的catch语句,程序将会终止。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/642319


问题二:在g()函数中,为什么需要着陆场?

在g()函数中,为什么需要着陆场?


参考回答:

在g()函数中,需要着陆场是因为在函数f()抛出异常后,需要回溯到g()函数,并在此停留以析构在g()中创建的局部对象a,然后再继续向上回溯栈帧。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/642317


问题三:如何捕获异常?

如何捕获异常?


参考回答:

异常是通过catch语句来捕获的。在main()函数中,通过检查从下层函数传递上来的动作标识(例如,通过寄存器rdx传递),可以确定是否捕获到异常以及捕获到的是哪种类型的异常。然后,根据异常类型执行相应的catch语句块。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/642318


问题四:__cxa_throw()是如何回溯栈帧和找到着陆场的?

__cxa_throw()是如何回溯栈帧和找到着陆场的?


参考回答:

__cxa_throw()回溯栈帧和找到着陆场的过程依赖于编译时生成的.eh_frame和.gcc_except_table段。运行时,借助这两张表可以找到上层栈帧和着陆场的位置。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/642320


问题五:如果异常类型与所有的catch语句都不匹配会怎么办?

如果异常类型与所有的catch语句都不匹配会怎么办?


参考回答:

如果抛出的异常类型与所有的catch语句都不匹配,那么异常会继续向上回溯栈帧,直到找到匹配的catch语句或者程序因为没有合适的处理而终止。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/642321

相关文章
|
5月前
|
SQL 安全 程序员
C++:异常
C++:异常
50 7
|
5月前
|
小程序 编译器 Linux
C++ 异常原理:以一个小程序为例
作者在调查某个 bug 时涉及到 C++ 异常,借此机会以本文把 C++ 异常机制梳理清楚供大家参考。
|
5月前
|
安全 Java 程序员
【C++】异常 -- 详解
【C++】异常 -- 详解
|
3月前
|
安全 Java 程序员
【C++11】异常知多少
【C++11】异常知多少
36 7
|
5月前
|
缓存 安全 Java
从C语言到C++_35(异常)C++异常的使用+异常体系+异常优缺点(下)
从C语言到C++_35(异常)C++异常的使用+异常体系+异常优缺点
46 7
|
4月前
|
安全 C++
详细解读c++异常模板复习
详细解读c++异常模板复习
23 0
|
5月前
|
程序员 Linux C语言
从C语言到C++_35(异常)C++异常的使用+异常体系+异常优缺点(上)
从C语言到C++_35(异常)C++异常的使用+异常体系+异常优缺点
36 3
|
4月前
|
存储 Java 程序员
【C++航海王:追寻罗杰的编程之路】异常——错误处理方式之一
【C++航海王:追寻罗杰的编程之路】异常——错误处理方式之一
26 0
|
5月前
|
SQL 缓存 安全
【C++入门到精通】异常 | 异常的使用 | 自定义异常体系 [ C++入门 ]
【C++入门到精通】异常 | 异常的使用 | 自定义异常体系 [ C++入门 ]
43 2
|
5天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
15 4