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