在Dart中扩展Exception类

时间:2014-01-13 16:34:57

标签: dart

当我尝试扩展Exception类并且无法找出原因时,我一直收到错误。 以下是我的自定义异常的代码:

class MyException extends Exception {
  String msg;
  MyException(this.msg);
  String toString() => 'FooException: $msg';
}

错误解决了构造函数。它抱怨“生成构造函数'异常([动态消息]) - >异常'预期,但工厂发现”。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:9)

你几乎是对的。您需要实现异常而不是扩展它。这应该有效:

class MyException implements Exception {
  final String msg;
  const MyException(this.msg);
  String toString() => 'FooException: $msg';
}

您不必使msg成为最终版本或构造函数const,但您可以。以下是Exception类(来自dart:core库)的实现示例:

class FormatException implements Exception {
  /**
   * A message describing the format error.
   */
  final String message;

  /**
   * Creates a new FormatException with an optional error [message].
   */
  const FormatException([this.message = ""]);

  String toString() => "FormatException: $message";
}