加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby reraising异常w /附加字符串参数

发布时间:2020-12-16 20:47:07 所属栏目:百科 来源:网络整理
导读:这是情况.我想让doStuff()中的所有异常都通过代码来浮起,以便它们在更高级别处理. 我也想记录在更高级别的doStuff()中发生异常的频率,目前正在这样做: begin doStuff()rescue Exception = raise e,"specific error to log in a db" doStuff代码抛出数十个异
这是情况.我想让doStuff()中的所有异常都通过代码来浮起,以便它们在更高级别处理.

我也想记录在更高级别的doStuff()中发生异常的频率,目前正在这样做:

begin
  doStuff()
rescue Exception =>
  raise e,"specific error to log in a db"

doStuff代码抛出数十个异常,我想捕获每个这些事件放在db中.有一个doStuff2()也可以抛出相同的指令,我想知道他们来自哪个函数.

添加额外的字符串,似乎改变了异常本身,并且丢失了原始异常所有的好的格式和跟踪信息.

关于我如何可以修改原始异常的任何建议,还要跟踪doStuff()中发生的所有异常?

解决方法

如果您调用raise而不通过任何参数,Ruby将重新提高最后一个异常.
begin
  doStuff()
rescue => e
  log_exception(e)
  raise  # This will re-raise the last exception.
end

作为附注,我想给您一些关于Ruby最佳实践的建议.

> doStuff()方法不遵循Ruby命名约定.你应该使用下划线的方法.请使用do_stuff.另外,没有必要使用()如果没有参数.>不要拯救异常,而是抢救你需要抢救的最低级的阶级.在大多数情况下,您可能希望拯救所有类型的StandardError或RuntimeError.事实上,如果您在不传递错误类型的情况下使用rescue,则Ruby将自动拯救StandardError的任何子类.异常类是非常低的级别,它也会捕获语法错误以及其他几个编译器问题.在这种情况下,您可能希望让应用程序崩溃,这样您就不会部署断开的应用程序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读