2023-11-22
try/catchの際にnew TypeErrorオブジェクトを追加することでエラーの内容を自分でエラーをカスタマイズすることができます。
投げたエラー文を使ったダイアログを表示したりエラー文に応じてリダイレクトをしたりと
広い範囲で使うことができるので少し凝ったtry/catchを使う際は追加すると便利です。
以下のように通信結果が404(対象ファイルが見つからない)だったりしたときにTypeErrorの中身が
throw(投げられる)されcatchへと渡されます。
try {
if(window.localStorage.getItem(‘userType’) === ‘supporter’){
result = (await weatherService.getWeather()).data;
}
if (result) {
this.setState({ weather_result: result });
} else {
throw new TypeError(“見つかりませんでした。”)
}
//TypeErrorの中身「見つかりませんでした」が格納される
} catch (error) {
console.log(error);
}
また、TypeError自身はメッセージ以外にも引数を持つことができ、それぞれどのような値を返すかは
最初から決まっています。
一つ目の引数にはメッセージ、二つ目の引数にはファイル名、三つ目の引数は数値の10
をいれています。いずれも返ってきているのが確認できます。
try {
throw new TypeError('Hello', "hello.js", 10);
} catch (e) { console.log(e.message); // "Hello
" console.log(e.fileName); // "hello.js
" console.log(e.lineNumber); // 10 }
filenameとlinenumberは任意なので必要なければmessageだけでも構いません。