![8377c42f5c2db7f477c86d2f98dcdf9e.png](https://i-blog.csdnimg.cn/blog_migrate/fb493da65ab5ea413d42f6398391fef4.jpeg)
C++ 异常处理机制
void f()
{
...
...throw 1;
...
...throw 1.0;
...
...throw "abcd";
...
}
int main()
{
...
try
{
f();
}
catch(int){}
catch(double){}
catch(char*){}
}
————————————————
![b4f1dc74dcaccc9337d4cc5757bfc77c.png](https://i-blog.csdnimg.cn/blog_migrate/6e4ef1b3d1cc5086c389a4e7ed532a37.jpeg)
C++异常处理机制的作用(个人理解)
之前一直没有对异常处理机制有个好的认知,总感觉这个东西有些鸡肋。
但最近在写C++/MFC/Halcon开发的程序的时候突然感觉领会了一些异常处理机制的作用,现记录下来。
Halcon算法有时会碰到这种问题,台式机没有连接摄像设备,但是Halcon写的算法需要进行图像处理,没有图像怎么办呢?报错就完了,可是Halcon报错不是一般的报错,只要Halcon函数使用出现错误,直接就挂掉程序,就像下面这样
![88753bcfed681da52e9f46e4f34adfa4.png](https://i-blog.csdnimg.cn/blog_migrate/fb8f587ff09243b6beb3d27c141f9ca5.jpeg)
这谁顶得住呀,这要是给别人来用,点一下崩一次,点一下崩一次,岂不是玩完了?
然后我想了一个办法,这还不简单吗,执行语句之前我先判断条件是否满足,用if-else就完事了,可是写着写着我又发现一个问题。。。有些错误的多样性远远不是想的那么简单,最主要的是有些错误没法儿提前预知啊,比如根据路径读取一张图片,用if-else得判断路径对不对、有没有图等等,写一两个还好,如果每个处理的地方都要写这些,那。。。
这时候,主角登场了,异常处理机制try-catch,解决了上述的两个问题:1)程序出错直接崩溃 ;2)错误类型判断。
![d81e286515975294800beced7f2cf5a3.png](https://i-blog.csdnimg.cn/blog_migrate/03ba786146a63b219b4c8313905c7db9.jpeg)
代码大体如上图所示,这时候试着(try)执行第一句caltab_points,如果错误就回抛出(throw)一个错误被下面的catch给接住,这时候就可以在catch的代码块中做出相应的处理,这里我就直接结束了这整个函数的执行,return 0;返回一个执行失败的信息给上级调用函数并且用一个对话栏来显示错误信息和错误码,如果需要解决这个问题,除了根据错误提示来找问题,还可以根据错误码来寻找对应的解决方案,错误提示如下图,这样既保证了程序执行遇到错误时不挂掉,也友好地提示出了错误的信息。
![691af88f1551647dae65431cef23d7b3.png](https://i-blog.csdnimg.cn/blog_migrate/11753a69dcc227ce2049a139608c306e.jpeg)
这些只是对庞大的异常处理机制一个粗略的个人理解,如有错误欢迎指出!
————————————————
![b4de68e7d9853d6d1b24f6311a4c4d04.png](https://i-blog.csdnimg.cn/blog_migrate/5209949392bfb550bfea88265ffcfd1b.jpeg)
通过分享实用的计算机编程语言干货,推动中国编程到2025年基本实现普及化,使编程变得全民皆知,最终实现中国编程之崛起,这里是中国编程2025,感谢大家的支持。
原文链接:https://blog.csdn.net/haitaolang/article/details/70881206
原文链接:https://blog.csdn.net/o707191418/article/details/100139220