Crystal 中的异常和错误
Exceptions & Errors in Crystal
这是一个一般性问题。在Crystal中,Exception
和Error
有什么区别?
比如JSON
包中,既有JSON::Error
and a JSON::ParseException
,又继承自JSON::Error
。另外,我们怎么知道一个方法是否可能引发 Exception
(或 Error
,我真的不知道有什么区别)?
Error
和Exception
没有区别,只是命名不一致。
这可能有一天会被标准化。 IIRC 的共识主要是仅对一般基础 class 使用 Exception
,对特定错误的所有实现使用 Error
。在那个方案中,JSON::ParseException
实际上应该是 JSON::ParseError
。
方法描述通常应说明可以抛出哪些错误,但这可能不是一个决定性的列表(如果有的话)。无法从语义上推断出 所有 种可由特定方法抛出的异常类型。
这是一个一般性问题。在Crystal中,Exception
和Error
有什么区别?
比如JSON
包中,既有JSON::Error
and a JSON::ParseException
,又继承自JSON::Error
。另外,我们怎么知道一个方法是否可能引发 Exception
(或 Error
,我真的不知道有什么区别)?
Error
和Exception
没有区别,只是命名不一致。
这可能有一天会被标准化。 IIRC 的共识主要是仅对一般基础 class 使用 Exception
,对特定错误的所有实现使用 Error
。在那个方案中,JSON::ParseException
实际上应该是 JSON::ParseError
。
方法描述通常应说明可以抛出哪些错误,但这可能不是一个决定性的列表(如果有的话)。无法从语义上推断出 所有 种可由特定方法抛出的异常类型。