JavaScriptの例外処理
◼︎例外をキャッチしたい場面
事前にあるオブジェクトAが作成され、オブジェクトBがAを使用するとき、Aがない場合に例外として補足したい。
具体的には、次の処理で例外を補足したい。
ここのnullチェックを例外にしたい理由は、やはりここにはnullで来ることはないということを明示しておきたいのと、発生場所と原因がわかるようにしておきたいと言う意図からです。
protected createEditorBox(): void { this.editorBox = new Box(); this.editorBox.fillColor('#99ffff'); this.editorCanvas = new Canvas(250, 250); this.editorBox.addChild(this.editorCanvas); if (this.mainBox === null) { // 例外を補足したい } this.mainBox.addChild(this.editorBox); this.mainBox.setGrow(0, 1); }
◼︎JavaScriptの例外処理 JavaScriptの例外処理はthrowで例外を投げるか、try...catchで例外を受け取るかの2通りの方法がある。
例外はErrorオブジェクトを使用して補足する。JavaScriptのErrorオブジェクトには6つの型があって、それぞれに意味合いが異なる。
EvalError : eval()関数を使用した時に発生したエラーを補足する。eval()関数は、その引数に指定した文字列をJavaScriptコードととして実行する関数のこと。現在のECMAScriptの仕様では使用されていない。
RangeError : 数値の有効桁数が1以上100以下の範囲にない時に投げられる例外。有効桁数はNumber.toPrecision()で確認することができる。
ReferenceError : 明示されていない変数を使用した時に投げられる例外。
SyntaxError : 構文エラーを補足しようとする時に使用する例外。
TypeError : 型が違う変数に対して、別の型のメソッド呼び出しなどを行った際に補足される例外。
URIError : decodeURI()などの関数で不正なURIを指定した時に補足される例外。
予期される例外に対して、明示的に型を指定できればよりコードを読む側には分かりやすいが、上にあげた中に今回使用できそうなものはない。そこでErrorオブジェクトを投げることにした。
◼︎例外を補足する
次の様にしてこの関数をメンバとしてもつクラスと、発生場所であるこの関数名を明示しておきます。
if (this.mainBox === null) { throw new Error('[Renderer.createEditorBox()]'); }