Skip to content

コントローラ初期化処理で異常が起きた時の動作の整理 #367

@fukudayasuo

Description

@fukudayasuo

コントローラのライフサイクルで例外が起きた時や、ライフサイクルイベントがrejectされるプロミスを返した時、ルートエレメントが無い場合、テンプレートが無い場合など、コントローラの初期化に失敗する場合の動作について、以下のような挙動になるようにします。

  • コントローラの初期化に失敗した時、コントローラをdisposeする。ユーザコード(__initなど)で例外が起きた時は、それを投げる(飲まない)。
  • 初期化完了前にコントローラがdisposeされるときに、__unbind、__disposeのライフサイクルは実行しない。
  • コントローラをdisposeするとき、__unbind、__disposeで例外が起きてもコントローラのunbind、dispose処理は行う。ただし、nullifyは実行しない(エラー原因の特定をしやすくするため)。例外が起きたらそれ以降のライフサイクルは実行しない。
  • コントローラの初期化に失敗した時、イベントをあげる。controllerManagerをeventDispatcherのmixinとして、controllerManagerがdispatchするようにする。コントローラ定義オブジェクトや例外オブジェクト等をイベントハンドラの引数として受け取れるようにする。

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions