JS コンパイラからスローされるエラーに影響を与えることは可能ですか? 特に、独自のエラー タイプを作成しNullPointerException
、組み込みエラー ( や など) をプロキシしてError
、TypeError
カスタム例外を返す可能性があるようにしたいと考えています。
次の簡単な試みを考えてみましょう (はい、それらはグローバル変数ですが、そうであるはずです):
NullPointerException = function (msg) {
this.message = msg;
};
NullPointerException.prototype.toString = function () {
return "NullPointerException: " + this.message;
};
var ProxyTypeError = TypeError;
TypeError = function (msg) {
if (msg.indexOf('null') === -1) {
return new ProxyTypeError(msg);
}
return new NullPointerException(msg);
};
これは、次のような場合にうまく機能します
throw new TypeError('normal error'); // 'TypeError: normal error'
throw new TypeError('null'); // 'NullPointerException: null'
ただし、実際に機能させたいシナリオでは機能しません。
var obj = null;
console.log( obj.someMethod() ); // 'Uncaught TypeError: ...'
私は、ブラウザが異なるメッセージと異なるエラーを使用すること、およびこれを実行したいということさえ大ざっぱであることを認識しています。ただし、これに対する実際の解決策があるかどうかはまだ興味がありますか? 結局、ユースケースは次のようなものです
try {
// ... code ...
} catch( e ) {
if( e instanceof NullPointerException ) {
// handle NPE separately
}
// do something else
}
その部分にアクセスできないcatch
ため、それに応じてエラーをスローしたいと考えています。