例えばこんなコード
throw new Error();
実行すると例外が出る。
使い道としては、エラーを返す代わりに例外を投げたい時に使う。
function hoge(arg) {
if(arg <= 10) {
console.log(arg);
} else {
throw new Error('10を超えてますよ');
}
}
hoge(11)
出力
Uncaught Error: 10を超えてますよ
エラーを拾う
例外の内容が「10を超えてますよ」エラーの場合のみ実行したい処理があったとする。
その場合は多分こうなる。
try{
hoge(11);
} catch(e) {
if(e.message === '10を超えてますよ'){
console.log('10オーバーエラーを取得しました。')
}
}
出力
10オーバーエラーを取得しました。
ただこの実装はできるだけ避けたい。
※実は職場で見た実装
どうしよう
この辺を参考にしてみた
// オリジナルErrorを定義
class MyError extends Error{
constructor(message) {
super(message)
}
}
try{
hoge(11);
}catch(e){
// 判定に「instanceof」を使う
if(e instanceof MyError){
console.log('10オーバーエラーを取得しました。')
}
}
出力
10オーバーエラーを取得しました。
ちなみに
実はErrorクラス以外もthrowできる。
※ややこしくなるので絶対やらないほうがいいと思う
class MyClass {
constructor() {}
}
try{
hoge(11);
} catch(e) {
if(e instanceof MyClass){
console.log('10オーバーエラーを取得しました。')
}
}
出力
10オーバーエラーを取得しました。
思いつたことがあったら追記します。