JavaScriptで例外を発生させる!(throw)

JavaScript

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オブジェクトに設定されたnamemessageのプロパティを出力しました。
実行すると、下記のように出力されました。

処理開始
例外発生!
myError!
自作エラーです!

例外が発生して、自作したMyErrorオブジェクトに設定した内容が出力されました。

throwについてまとめ

今回はJavaScriptで例外を発生させる方法について書きました。
記事の内容をまとめると、下記になります。

・throwを使うと、try catchブロックで例外を発生させることができる。
・throwではErrorオブジェクト以外にも、文字列・論理値・数値・オブジェクトなどを投げれる。
・Errorクラスを元に、自作の例外クラスを作ることができる。

コメント

タイトルとURLをコピーしました