2014-01-13 3 views
2

Я продолжаю получать ошибку, когда пытаюсь расширить класс Exception и не могу понять, почему. Вот код для моего пользовательского исключения:Расширение класса Exception в Dart

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

ошибка решает вокруг конструктора. Он жалуется, что «Генерирующий конструктор« Исключение »([динамическое сообщение]) -> Исключение» ожидается, но найдено на заводе ». Как это исправить?

+0

Вы не можете расширить класс, определяющий только заводский конструктор. http://stackoverflow.com/questions/18564676/extending-a-class-with-only-one-factory-constructor – user7610

ответ

6

У вас оно почти справа. Вам нужно реализовать Исключить, а не расширять его. Это должно работать:

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

Вы не должны сделать msg окончательный или конструктор const, но вы можете. Ниже приведен пример реализации класса Exception (из библиотеки дротика: 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"; 
} 
Смежные вопросы