新手问题 如何知道调用 Ruby 的某函数会抛出哪些异常?

xiaofan · 2016年11月07日 · 最后由 xiaofan 回复于 2016年11月07日 · 1731 次阅读

我用 Java, 调用一个方法, 该方法的 API 会告诉我会抛出哪些潜在的异常. 但是 Ruby API (我用 Dash), 我却没办法知道, 不可能只有等到运行一段时间后, 才晓得有哪些异常抛出. 比如 Net::HTTP.get_response. 怎么知道它会抛出哪些异常?

Java 也没法告诉你所有的异常类型吧?例如 A -> B -> C -> D 这样基层的函数调用,D 函数要抛出的异常你没法知道吧?

#1 楼 @huacnlee 那如何尽可能知道有哪些潜在异常抛出呢?

一般 Ruby 的各种库 API 文档的位置都有源代码的链接或源代码附带,里面一看就知道哪个函数会有什么异常可能抛出了

此外,像 Net::HTTP.get_response 你不需要了解到到底有哪些异常吧,你只需要处理正确的场景,异常统一打印日志就好了。

你不需要知道异常出来是什么类型,因为返回出来的都是继承自 Exception 的类型,所以:

除非你需要特性的处理,比如 Timeout,这个时候需要查查了

begin
  Net::HTTP.get_response('https://ruby-china.org')
rescue => e
  # e 是一个 Exception 类型 
  # https://ruby-doc.org/core-2.2.0/Exception.html
  puts e.message
end

另外,你可以阅读以下这篇文章:

https://ruby-china.org/topics/29104

xiaofan 关闭了讨论。 11月07日 16:24
需要 登录 后方可回复, 如果你还没有账号请 注册新账号