JavaScriptでthrowを使って、例外を発生させる方法について書いています。
try catchブロックの中でthrowを使って、例外を発生させることができます。
throwの使い方について解説した後に、例外オブジェクトを自作する方法について書いています。
throwの使い方
throwを使うと、try catchブロックで例外処理を定義しているコードの適当な場所で、例外を発生させることができます。
例えば、下記のように使うことができます。
try {
console.log('処理開始')
throw 'error'
console.log('HELLO')
} catch(e) {
console.log('例外発生!')
console.log(e)
}
try catchブロックで対象の処理を囲みました。
最初にconsole.logで「処理開始
」を出力した後に、throwを使って文字列の「error
」を例外として投げています。
例外が投げられるので、catchの方で受け取って処理します。
console.logで「例外発生!
」を出力した後に、発生した例外をそのまま出力しました。
プログラムを実行すると、下記のようになります。
処理開始
例外発生!
error
例外が発生して、catchされることが確認できました。
このようにthrow呼び出すと、例外が発生し、処理がcatchに遷移します。
今回は、文字列で例外を投げましたが、論理値や数値、オブジェクトを投げることもできます。
throw 'hello'
throw 999
throw true
throw {message: 'エラーです。', code: 100}
例外オブジェクトを自作する
throwでは、いろんなデータ型が投げれることが確認できました。
作成したロジックで、例外(エラー)が起きたときには、Errorクラスを元にしたオブジェクトが投げられます。
このErrorクラスを継承して、例外オブジェクトを自作することができます。
class MyError extends Error {
constructor(message) {
super(message)
this.name = 'myError!'
}
}
try {
console.log('処理開始')
throw new MyError('自作エラーです!')
console.log('HELLO')
} catch(e) {
console.log('例外発生!')
console.log(e.name)
console.log(e.message)
}
最初にError
クラスを継承して、MyErrorクラスを作りました。
constructorで、MyErrorクラスをnewしたときに渡す文字列を受け取って、messageプロパティに格納しています。
また、nameプロパティには固定で「myError!
」を格納するようにしました。
その後にMyErrorクラスを定義した後に、実際に使ってみています。
try catchブロックの中で、MyErrorクラスをnewしてthrowしました。
これで、自作したエラー例外オブジェクトが投げられます。
catchで受け取って、まず「例外発生!」文字列を出力しています。
その後にMyErrorオブジェクトに設定されたname
とmessage
のプロパティを出力しました。
実行すると、下記のように出力されました。
処理開始
例外発生!
myError!
自作エラーです!
例外が発生して、自作したMyErrorオブジェクトに設定した内容が出力されました。
throwについてまとめ
今回はJavaScriptで例外を発生させる方法について書きました。
記事の内容をまとめると、下記になります。
・throwではErrorオブジェクト以外にも、文字列・論理値・数値・オブジェクトなどを投げれる。
・Errorクラスを元に、自作の例外クラスを作ることができる。
コメント