作者descent (「雄辩是银,沉默是金」)
看板C_and_CPP
标题Re: [问题] 纯C下的异常处理
时间Mon Nov 25 18:00:53 2019
※ 引述《icetofux ()》之铭言:
: 2.我在三个层失败的时候都会留下log,可是每当发生错误时回去读log总觉得很冗余
: ,比方说一但有个硬体异常引起的错误,我会在log中依序看到硬体驱动层的错误讯
: 息、协议处理层的错误讯息、业务逻辑层的错误讯息。但其实仔细想想硬体驱动层
: 一但失败其他两个层根本不可能会成功,这增加除错时阅读的难度,而且实质上浪
: 费了系统资源(记忆体、储存媒体空间之类的),请问这部分有更好的取舍方式吗?
: 我不确定有没有把自己疑惑的地方好好表达清楚,如果有语意不明的地方请让我知道。
: 谢谢。
https://descent-incoming.blogspot.com/2015/09/c-c-exception-handle.html
这是使用 setjmp/longjmp 实作类似 try/catch 的功能,
这个当然比不上 c++ exception handling, c++ exception handling
会在回到上层 function 时, 检查是不是需要呼叫物件的解构函式,
真是一个伟大又复杂的功能。
使用这个要搞懂 setjmp/longjmp 以及其局限性, 要不然可能会发生
很难找的 bug。
不确定你的问题是不是值得使用这个。
我用在 malloc fail 时, 直接跳到错误处理区块。
--
纸上得来终觉浅,绝知此事要躬行。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 113.196.174.254 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1574676060.A.708.html
1F:推 cuteSquirrel: 推 11/25 18:46
※ 编辑: descent (113.196.174.254 台湾), 11/26/2019 09:01:27
2F:推 flysonics: 看起来颇实用 推 11/27 02:03
3F:推 koka813: 感觉实用,可以推推看! 12/03 23:33