Crystal 中的异常和错误

Exceptions & Errors in Crystal

这是一个一般性问题。在Crystal中,ExceptionError有什么区别?

比如JSON包中,既有JSON::Error and a JSON::ParseException,又继承自JSON::Error。另外,我们怎么知道一个方法是否可能引发 Exception(或 Error,我真的不知道有什么区别)?

ErrorException没有区别,只是命名不一致。

这可能有一天会被标准化。 IIRC 的共识主要是仅对一般基础 class 使用 Exception,对特定错误的所有实现使用 Error。在那个方案中,JSON::ParseException 实际上应该是 JSON::ParseError

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