🎈

UnimplementedError class

2024/02/29に公開

📕Overview

https://api.flutter.dev/flutter/dart-core/UnimplementedError-class.html
/// まだ実装されていない操作によってスローされる。
///
/// この[Error]は、まだ実装されていない未完成のコードによってスローされます。
/// この[エラー]は、必要な機能をすべて実装していない未完成のコードによってスローされます。
///
/// クラスがその機能を実装するつもりがない場合、 /// [Unsupported Error] を投げるべきです。
/// 代わりに[UnsupportedError]を投げる必要があります。このエラーは
/// このエラーは開発中にのみ使用されます。

🧷summary

使われることが想定されるusecaseは、未実装の処理がある時です。

例1:

import 'package:isar/isar.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'isar.g.dart';


Isar isar(IsarRef ref) {
  throw UnimplementedError();
}

isarを使ったサンプルはこちらの記事でご紹介しております。
https://zenn.dev/joo_hashi/articles/abf01617601f18

例2:

abstract interface class BaseRepository {
  String get tableName;

  String get primaryKey;
}

class BaseRepositoryImpl implements BaseRepository {

  // UnimplementedErrorとは、未実装のメソッドが呼ばれた場合に発生するエラーです。
  
  String get tableName => throw UnimplementedError();

  
  String get primaryKey => throw UnimplementedError();
}

これはベースリポジトリを使ったパターンですね。普段はゲッター使わないので、勉強になりました。

🧑‍🎓thoughts

UnimplementedErrorは、未完成の機能を作るときに使われるコードのようです。たまに見かけるのですが、よくわからずに使っててよくないなと思い記事にしました。

Discussion