Crystal中的异常和错误

Rav*_*Koh 4 crystal-lang

这是一个普遍的问题.在Crystal中,an Exception和an有Error什么区别?

例如,在JSON包中,有两个JSON::Error和一个JSON::ParseException继承自JSON::Error.另外,我们如何知道一种方法是否会引发Exception(或者Error,我真的不知道其中的区别)?

Joh*_*ler 5

Error和之间没有区别Exception,它只是不一致的命名.

那可能有一天应该标准化.IIRC的共识主要是Exception仅用于一般基类并Error用于特定错误的所有实现.在那个计划中,JSON::ParseException实际应该是JSON::ParseError.

方法描述通常应说明可以抛出哪些错误,但这可能不是结论性列表(如果有的话).无法在语义上推断出特定方法可以抛出的所有异常类型.