我从我的状态机中调用了很多外部函数——显式喜欢sendMessage(...)
或隐式喜欢a!=b
。到目前为止,我一直试图跟踪可以抛出的东西,但随着数量的增长,对更好方法的需求也在增加。错过一个异常并让它传播到状态机框架的代码中显然会造成很多混乱。
我看到了三个选项,但我希望有人能指出一个更好的选项:
try catch
在每个onEntry
和onExit
处放置一个action
。由于它们有很多而且它们很漂亮,这几乎会使代码长度增加一倍并降低可读性。做一大堆功能
noexcept
。如果函数在其他地方使用,或者它可以合法地抛出并且异常是唯一好的解决方案,这似乎是不可能的。修改我调用的大多数函数以使用 alexandrescu
Expected<T>
作为返回类型。请参阅:http ://channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2012-Andrei-Alexandrescu-Systematic-Error-Handling-in-C
哪个选项最好?有没有更好的策略?