4

JSでは、「new Error(message)」をスローできますが、例外の種類を検出してメッセージで何か別のことをしたい場合は、それほど簡単ではありません。

この投稿: http ://www.nczonline.net/blog/2009/03/10/the-art-of-throwing-javascript-errors-part-2/

あなたはそれをこのようなことをすることができると言っています:

function MyError(message){
  this.message=messsage;
  this.name="MyError";
  this.poo="poo";
}
MyError.prototype = new Error();

try{
  alert("hello hal");
  throw new MyError("wibble");
} catch (er) {
  alert (er.poo);   // undefined.
  alert (er instanceof MyError);  // false
      alert (er.name);  // ReferenceError.
}

しかし、それは機能しません(「未定義」になり、falseになります)

これも可能ですか?

4

1 に答える 1

3

Douglas Crockfordは、次のようなエラーをスローすることをお勧めします。

throw{

    name: "SomeErrorName", 
    message: "This is the error message", 
    poo: "this is poo?"

}

そして、あなたは簡単に言うことができます:

try {
    throw{

        name: "SomeErrorName", 
        message: "This is the error message", 
        poo: "this is poo?"

    }

}
catch(e){
    //prints "this is poo?"
    console.log(e.poo)
}

MyError関数アプローチを本当に使用したい場合は、おそらく次のようになります。

function MyError(message){

    var message = message;
    var name = "MyError";
    var poo = "poo";

    return{

        message: message, 
        name: name, 
        poo: poo
    }

};
于 2013-01-31T15:45:07.007 に答える