Edited at

エラーダイアログと$A.error関数

More than 3 years have passed since last update.

Lightningの開発をしていると、予期しないエラーが発生した旨の怪しいダイアログを見ることがあるかと思いますが、自分でも表示することができます。


javascript

try {

undefinedObj.refer();
} catch (e){
$A.error('error', e);
}

スクリーンショット 2014-12-16 0.41.02.png

第二引数は省略することもできます。

見栄えがかなりいまいちなのは、developer consoleを見て適当なクラスのcssを設定してあげれば良いとしても、タイトルも固定のようなので、ユーザーが呼び出すことを想定したメソッドではないかも知れませんね…。

似たようなメソッドで、$A.warningおよび$A.logというメソッドもあるようですが、中身を見た限り、現状ではどこにもログ出力されていないように見えます。当面、ブラウザーのコンソールに出力する場合はconsole.logを使う必要がありそうです。


2014/12/16 15時追記

StackExchangeの投稿 Salesforce1 Lightning Debug “log()” method not working にあるように、やはりログメソッドは現在動作しないようです。

後で一括置換しやすいようにするには、console.logよりも自前のログ関数を呼び出すようにしておいた方が良いですね。


2014/12/18 0時追記

errorもlogやwarningもドキュメントに載っていますが、記述が正しくないようですね。現在の実装だとerrorでスタックトレースは出ません・・・。下記のようなコードを実行しておくと、logやwarningの呼び出しでエラーオブジェクトやスタックトレースがコンソールに出力されるようになります。

$A.$logInternal$ = function (type, message, error, trace) {

console.log(type, message, error, trace);
};


2014/12/18 1時追記

$A.message('message')でもerrorと同じダイアログを出力することができますね。また、$A.trace()ではconsole.trace()が実装されている環境なら実行します。これらを使うと、例えば現在空で定義されているassert関数は下記のように定義できますね。

$A.assert = function(condition, msg) {

if (!condition) { $A.error(msg||"Assertion failed"); $A.trace(); }
};