2016-04-16 7 views
0

はJavaScriptに書式設定エラーを保存しません:カスタムエラーを投げることは、ログ<code>throw</code>のような組み込みのエラーを-ing

throw new Error("Something was wrong"); 

がきれいにテキストを表示 - あなたは、オブジェクトを投げた伝えることはできませんサブクラスErrorオブジェクト(またはそのことについては他のエラーオブジェクト)でカスタムエラーを作成する場合しかし、スローされたエラーがコンソールで同じように表示されていない enter image description here

だから、このコードを使用することにより:

var ImproperlyConfigured = function(message){ 
    this.name ="ImproperlyConfigured"; 
    this.message = message || "The object you tried to construct was improperly configured due to an unknown error"; 
} 
ImproperlyConfigured.prototype = new Error(); 

次は、私は、オブジェクトのプロパティ(namemessage)が示されているという事実を好きではない出力 enter image description here

です。実際には、私は理解していないことが好きではないなぜプロパティが表示されます。

私はちょっとグーグルで行きましたが、toStringメソッドを実装すると、このメソッドを使用すると、エラーの名前がもはや赤いパズルになっていないことがわかりました。

コード

var ImproperlyConfigured = function(message){ 
    this.name ="ImproperlyConfigured"; 
    this.message = message || "The object you tried to construct was improperly configured due to an unknown error"; 
    this.toString = function(){ 
     return this.message; 
    } 
} 
ImproperlyConfigured.prototype = new Error(); 

出力:私が達成したい何 enter image description here

手動console.errorメソッドを使用していないことで、当然のことながら、カスタムエラーを使用することにより、標準探しエラーであり、 try...catchブロックにあります。

これは可能ですか?

+0

Chromiumでコードを試したところ、[出力は正常でした](http://i.imgur.com/TPVpkHB.png)。どのソフトウェア/コンソールでテストしていましたか? –

+1

デベロッパーコンソールは特定の標準に準拠しておらず、ほとんどの場合、必要な操作を行います。 – Pointy

+0

@DenysSéguret私は現在[Google Chrome](https://www.google.com/chrome/browser/desktop/)を使用しています。バージョン49.0.2623.110 m – Adelin

答えて

0

Pointyが正しく(言い訳あり)と指摘したところ、ここでの問題はJavaScriptではなく、JavaScriptが実行されている環境(この場合はGoogle Chrome)です。

他の環境(Chromium、Firefox、NodeJSなど)では、JavaScriptホストがこれらのケースをどのように処理しているかに応じて、同じコードを使用して動作が異なる可能性があります。

関連する問題