相关疑难解决方法(0)

为什么在Ruby中"拯救Exception => e`是不好的风格?

Ryan Davis的Ruby QuickRef说(没有解释):

不要救援Exception.EVER.或者我会刺伤你

为什么不?什么是正确的做法?

ruby exception-handling

876
推荐指数
6
解决办法
28万
查看次数

如何知道救援的例外情况?

在Ruby中使用特定的代码库时,我经常发现自己不知道要解救什么异常.

例如,我经常使用HTTParty来处理我的rails/sinatra app会发出的任何HTTP请求.我挖掘了HTTParty的代码,发现了一个包含已定义的异常的文件.大!我会在提出请求时拯救他们.

为了测试它,我为请求输入了一个虚假的域名,但我没有预期的HTTParty :: ResponseError异常,而是得到了一个SocketError异常.

处理这个问题的最佳方法是什么?我知道HTTParty是Ruby实现的包装器,这可能是抛出SocketError异常的原因.但我怎么知道呢?

我可以通过拯救"异常"来解决这个问题,但这是非常糟糕的做法.我宁愿清楚我可能造成的异常并处理这些异常.

编辑:我应该澄清,真正促使我创建这个问题的是我不知道如何能够找出在调用特定函数时可能引发的异常...也就是说,无需查看每个函数调用在堆栈中.

ruby ruby-on-rails sinatra

3
推荐指数
1
解决办法
481
查看次数

标签 统计

ruby ×2

exception-handling ×1

ruby-on-rails ×1

sinatra ×1