Это похоже на интерфейс маркера , который сообщает читателю , что подкласс предназначен для использования в качестве исключения (создается в ситуации, когда ожидается, что пользователь поймает и обработает исключительная ситуация, а не ошибка).
Dart, язык, Exception
специально не обрабатывает. Это совершенно не нужно с технической точки зрения, так как все предметы можно бросить. Создание в вашем классе реализации Exception
означает, что должна быть выбрана его цель , даже если это не Error
, но вы должны рассматривать это как документацию, а не то, что ваша программа может осмысленно использовать.
Исключения, в отличие от Error
s, предназначены для перехвата и обработки , точно так же, как и возвращаемое значение. Исключение должно содержать достаточно информации, чтобы получатель мог сделать что-то значимое. Из-за этого вы не должны никогда генерировать простой Exception
в производственном коде (так что конструктор действительно устарел, за исключением времени разработки, пока вы не создадите правильный класс исключения).
Аналогично , вы никогда не должны поймать простой Exception
(не on Exception catch (e) {...}
), потому что тогда вы не решаете настоящую проблему. Если вы просто хотите поймать что-нибудь , используйте on Object
, потому что код может генерировать любой класс, и не все классы исключений должны реализовывать Exception
.