【发布时间】:2012-07-23 09:35:45
【问题描述】:
在 Ruby 中使用特定代码库时,我经常发现自己不知道要挽救哪些异常。
例如,我经常对我的 rails/sinatra 应用程序发出的任何 HTTP 请求使用 HTTParty。我挖掘了 HTTParty 的代码,发现了一个包含所使用的已定义异常的文件。伟大的!我会在提出请求时救他们。
为了测试它,我为请求输入了一个虚假的域名,但我没有预料到 HTTParty::ResponseError 异常,而是得到了一个 SocketError 异常。
解决这个问题的最佳方法是什么?我知道 HTTParty 是 Ruby 实现的包装器,这可能是引发 SocketError 异常的原因。但我通常怎么知道呢?
我可以通过拯救“异常”来解决这个问题,但这是非常糟糕的做法。我宁愿充分了解我可能导致的异常并处理这些异常。
编辑:我应该澄清一下,真正促使我提出这个问题的是,我不知道如何找出调用特定函数时可能引发的异常......也就是说,无需查看堆栈中的每个函数调用。
【问题讨论】:
-
为什么你想挽救异常?如果某个程序正在抛出它们,您究竟打算做什么来使继续处理变得有用?
标签: ruby-on-rails ruby sinatra