这是一个广泛的问题,但在Ruby编程时我会继续遇到这个问题.我来自一个很大的C和Java背景,当我使用库函数或方法时,我查看文档并查看错误返回的内容(通常在C中)或它可以抛出的异常(在Java中).
在Ruby中,情况似乎完全不同.刚才我需要解析从服务器收到的一些JSON:
data = JSON.parse(response)
Run Code Online (Sandbox Code Playgroud)
当然,在编写这段代码后我想到的第一件事就是如果输入不好怎么办?是否parse会在出错时返回nil,或者引发一些异常,如果是,那是哪些?
我查看文档(http://flori.github.com/json/doc/JSON.html#M000022),看看,简单地说:
"将JSON字符串源解析为Ruby数据结构并将其返回."
这只是我在Ruby中反复遇到的模式的一个例子.最初,我认为这是我正在使用的任何库的文档的一些缺点,但现在我开始觉得这是标准的做法,我的思维方式与Ruby程序员有点不同.有一些我不知道的惯例吗?
开发人员如何处理这个问题?
(是的,我确实查看了库方法的代码,并且可以了解引发了什么异常,但我不能100%确定,如果没有记录,我会感到不舒服,依赖它.)
编辑:看完前两个答案后,让我继续上面的JSON解析示例.
我怀疑我不应该这样做:
begin
data = JSON.parse(response)
raise "parse error" if data.nil?
rescue Exception => e
# blahblah
end
Run Code Online (Sandbox Code Playgroud)
因为我可以查看代码/测试并看到它似乎引发了一个ParserError错误(返回nil似乎不是Ruby中的标准做法).我是否正确地说建议的做法是:
begin
data = JSON.parse(response)
rescue JSON::ParserError => e
# blahblah
end
Run Code Online (Sandbox Code Playgroud)
...基于我ParserError通过查看代码和测试了解到的内容?
(我还编辑了这个例子,以澄清它是我正在解析的服务器的响应.)