※ 引述《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 时, 直接跳到错误处理区块。