【问题标题】:Dart: No Message specification for Exception?Dart:没有异常的消息规范?
【发布时间】:2019-03-07 15:21:35
【问题描述】:

我已经学习飞镖几个星期了,为了练习目的,我决定编写一个数字矢量类。此类需要UnequalVectorLengthException

我对 dart 中的异常进行了研究,阅读了文档,但我惊讶地发现没有像 getMessage() 这样的默认方法,就像在 java 中一样。我知道你可以在抛出异常时添加消息,但我觉得应该有一个默认消息“绑定”到异常实例,你可以在捕获它时检索它。 这使我认为实现可以/应该是:

class UnequalVectorLengthException implements Exception {}

这在我的 java 眼中看起来很奇怪且不正确。那么投掷可能是:

if(stuff) throw UnequalVectorLengthException("Vectors are unequal length");

我还看到人们添加了额外的方法,例如 String errorMessage() {},但由于该异常的用户可能不希望存在此方法,因此我认为这不是执行此操作的首选方法。

我的问题:上面显示的代码是在 dart 中实现异常的正确方法(在这种情况下,一个简单的注释就可以了),还是有更好的方法来实现异常?

【问题讨论】:

    标签: exception dart


    【解决方案1】:

    类定义看起来不错。 throw 行将不起作用,因为该类没有采用 String 的构造函数。 Exceptionmessage 参数是为了在您不想费心创建更具体的类型的情况下,它可以有一个不错的 .toString()

    并非Exception 的每个子类都需要或应该有message。如果在特定情况下有意义,那么您可以添加它。在您的示例中,我不会打扰消息,因为它只是重复类名中已经存在的信息。

    class UnequalVectorLengthException implements Exception {
      @override
      String toString() => 'Vectors are unequal length';
    }
    
    if (stuff) throw UnequalVectorLengthException();
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2013-09-15
    • 1970-01-01
    相关资源
    最近更新 更多