我已经学习飞镖了两周了,出于练习的目的,我决定研究数字矢量类。此类需要UnequalVectorLengthException
。
我对dart中的异常进行了研究,阅读了文档,但令我惊讶的是,没有像Java中的getMessage()
这样的默认方法。我知道您可以在引发异常时添加消息,但是我觉得应该有一个默认消息“绑定”到异常实例,您可以在捕获异常时将其检索。
这使我认为实现可以/应该是:
class UnequalVectorLengthException implements Exception {}
在我的Java看来看起来很奇怪而且不正确。那么抛出可能是:
if(stuff) throw UnequalVectorLengthException("Vectors are unequal length");
我还看到人们添加了诸如String errorMessage() {}
之类的额外方法,但是由于该异常的用户可能不希望该方法存在,因此我认为这不是实现此目的的方法。
我的问题:上面显示的代码是在dart中实现异常的正确方法(在这种情况下,一个简单的注释就可以了),还是有更好的方法来实现异常?
答案 0 :(得分:2)
类定义看起来不错。 throw
行将不起作用,因为该类没有采用String的构造函数。 message
的{{1}}参数是一个不错的Exception
,在您不想打扰创建更具体的类型的情况下。
并非.toString()
的每个子类都需要或应该有Exception
。如果在特定情况下有意义,则可以添加它。在您的示例中,我不会打扰消息,因为它只是重复类名中已经存在的信息。
message