書いてるスクリプトで改めてError
オブジェクトについて調べたので自分用のメモです。というのもどうやらJavaScriptの一般的なError
オブジェクトと違い、プロパティをAdobe ExtendScript用に拡張しているっぽいのですね。
プロパティ
プロパティ | 型 | 説明 |
---|---|---|
fileName | String |
エラーが起きたスクリプトファイル名*1 |
line | Number |
エラーが起きた行数 |
message | String |
エラーメッセージ |
source | String |
エラーが起きた場所のソースコード |
他にもいくつかプロパティがあるんだけど、何に使っているか、どう使うのか全然分からず。
ExtendScriptでの仕様と気づいたこと
new
演算子はあってもなくてもError
オブジェクトを返す
var e1 = new Error("hoge");
とvar e2 = Error("hoge");
は実質同じ- どの種のエラー(
TypeError()
とかReferenceError()
とか)でも、全部同じError
コンストラクタのインスタンス - ヘルパーオブジェクトの
$.error
はmessage
が空のError
オブジェクトを生成する
インスタンス化
Error()
を関数呼び出し、ないしnew演算子をつけてコンストラクタ呼び出しを行う。引数は3つ渡せるが1つで足りる。
var e = Error("The end of the world!"); $.writeln(e.constructor.name); //Error $.writeln(e.message); //The end of the world! $.writeln(e.fileName); //filename $.writeln(e.line); //1
省略可な第2引数にはファイル名(String
)、第3引数にはエラーが起きた行番号(Number
)を渡せるんだけど、渡しても渡さなくても同じ。
var e = Error("The end of the world!", $.fileName, $.line); $.writeln(e.constructor.name); //Error $.writeln(e.message); //The end of the world! $.writeln(e.fileName); //filename $.writeln(e.line); //1
まぁわざわざ渡さないでいいでしょ。
$.error
でもError
オブジェクトをインスタンス化できるものの、同時にmessage
プロパティを渡せないので不便。使う意味はなさそう。
参照
先の変数e
をそのまま$.writeln()
メソッドなどに突っ込むとmessage
プロパティが参照されるもよう。
var e = Error("The end of the world!", $.fileName, $.line); $.writeln(e); // Error: The end of the world!
ただご覧のように単純に参照されるわけではなく、頭に Error: と付く。
*1:イベントに定義したコールバック中だとどうやら undefined になるっぽい