c++ 如何try catch捕获系统异常?

小竹z 2016-04-06 02:12:37
RT。try catch默认只能捕获throw的异常,对于像除0,指针错误这种系统异常,有没有办法捕获呢?类似于windwos的SEH机制。
如果不能捕获,我像问问在开发程序中,如何解决这种情况呢?在网络服务器中,解析协议的时候往往会遇到很多由于客户端组包错误导致的这种异常,难道每个字段在解析前都判断是否合法?在业务逻辑处理中也会遇到这个问题,那程序中会充斥着太多的检查代码,效率也会拖慢。
...全文
607 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 Wenxy1 的回复:

try
{
// do something
}
catch(...) // catch all exception
{
// process exception
}
试了一下好像不行,连指针异常都无法捕获,直接崩掉了
jiqiang01234 2016-04-11
  • 打赏
  • 举报
回复
据我了解,linux没有像windows的SEH机制来处理异常。只能自己处理错误码然后抛出自定义异常。不过可以使用第三方库来处理异常,比如boost::asio
Wenxy1 2016-04-11
  • 打赏
  • 举报
回复

try
{
// do something
}
catch(...) // catch all exception
{
// process exception
}
Qyee16 2016-04-10
  • 打赏
  • 举报
回复
引用 楼主 zgxyz2010 的回复:
RT。try catch默认只能捕获throw的异常,对于像除0,指针错误这种系统异常,有没有办法捕获呢?类似于windwos的SEH机制。 如果不能捕获,我像问问在开发程序中,如何解决这种情况呢?在网络服务器中,解析协议的时候往往会遇到很多由于客户端组包错误导致的这种异常,难道每个字段在解析前都判断是否合法?在业务逻辑处理中也会遇到这个问题,那程序中会充斥着太多的检查代码,效率也会拖慢。
hawkxjy 2016-04-09
  • 打赏
  • 举报
回复
windows下使用try...finally来捕获硬件异常 https://zh.wikipedia.org/wiki/%E7%BB%93%E6%9E%84%E5%8C%96%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧