d的异常2

网友投稿 338 2022-11-05


d的异常2

​​原文​​​ 添加​​环境信息​​到可能​​无法访问​​传播异常的​​抛代码​​中. 是的,但可再次这样:抓一个,然后抛新的,并把旧的放在后面. 是的.但是,必须在每个可能想要添加​​环境信息​​的潜在​​抽象级别​​周围插入​​try/catch​​语法很痛苦.如果在​​战略入口点​​,用可插入的​​包装器​​,就更好了.如下?

// 幻想的,假设的语法auto myFunc(Args...)(Args args) { int additionalInfo = 123; scope(failure, additionalInfo); return runUnreliableOperation(args);}

​​域共享析构器​​,可以这样:

struct AdditionalInfo { static string[] info; this(string info) { AdditionalInfo.info ~= info; } ~this() { AdditionalInfo.info = AdditionalInfo.info[0 .. $ - 1]; } @disable this(this);}class AdditionalInfoException : Exception { this(string t) { import std.string; super(t ~ "\n" ~ AdditionalInfo.info.join(" ")); }}void bar() { with(AdditionalInfo("zone 1")) { with(AdditionalInfo("zone 2")) { } throw new AdditionalInfoException("info"); }}void main() { bar();}

​​抛出点​​​需要与之合作,但仍然可以​​试/抓​​​整个操作,并附加​​原始异常​​​到新异常中.最大的问题仍然是​​串类型​​​,呃. 通过编译器,可在​​​异常处理​​​的​​元数据​​​中附加​​函数级别​​​信息,因此就像生成​​栈跟踪​​​一样​​查找​​​它.但仅限于函数级.但是,有​​嵌套​​函数.


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:电话号码查询归属地API(电话号码查询归属地县级)
下一篇:SpringBoot+Vue+Flowable,模拟一个请假审批流程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~