JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでカスタム例外を使う方法|throw文とtry...catchの基本を解説

JavaScriptでは、throw文を使うことで、開発者が独自に定義した「カスタム例外」を発生させることができます。発生させた例外は、try...catch構文で受け取り、任意のエラー処理を行えます。

カスタム例外とは

カスタム例外とは、JavaScriptが自動的に検出する組み込みエラーではなく、プログラマが意図的に投げるエラーのことです。たとえば「0による除算」「不正な引数値」など、アプリケーション固有の条件をエラーとして扱いたい場合に活用できます。

文字列だけでなく、数値・オブジェクト・Errorオブジェクトなど、任意の値をthrowで投げることが可能です。

サンプルコード:0除算エラーをカスタム例外として捕捉する

以下は、ボタンをクリックすると関数が実行され、除算の分母が0の場合にカスタム例外を投げるシンプルな例です。

<html>
<head>
<script>
function myFunc() {
  var a = 100;
  var b = 0;
  try {
    if (b == 0) {
      // 分母が0ならカスタム例外をスロー
      throw "Divide by zero error.";
    } else {
      var c = a / b;
    }
  }
  catch (e) {
    // スローされた例外を受け取って表示
    alert("Error: " + e);
  }
}
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

コードの解説

1. throw文で例外を発生させる

b == 0 の場合、throw "Divide by zero error."; によって文字列の例外が投げられます。この時点で以降の処理は中断されます。

2. catchブロックで例外を受け取る

tryブロック内で例外が発生すると、直後のcatch (e)ブロックに制御が移ります。変数eにはスローされた値(ここでは文字列)が格納され、alert()でエラーメッセージとして表示されます。

より実践的な書き方:Errorオブジェクトを使う

文字列をそのままスローすることもできますが、実務ではErrorオブジェクトを使用するのが推奨されています。スタックトレースなどの情報が得られ、デバッグしやすくなるためです。

try {
  if (b === 0) {
    throw new Error("0による除算が発生しました。");
  }
  var c = a / b;
} catch (e) {
  console.error(e.message); // エラーメッセージのみ取得
}

まとめ

  • throw文で任意の値やErrorオブジェクトを例外として投げられる。
  • 投げられた例外はtry...catch構文で捕捉して処理する。
  • 実務ではErrorオブジェクトを使うことで、デバッグ情報を保持できる。
  1. JavaScriptでHTMLページをリダイレクトする方法をわかりやすく解説

    ページリダイレクトとは?あるURLをクリックしてページXにアクセスしたはずなのに、実際には別のページYに移動された——そんな経験はありませんか?これは「ページリダイレクト」と呼ばれる仕組みによるものです。Web開発では、サイト移転時や古いURLから新しいURLへの誘導など、さまざまな場面で活用されています。JavaScriptでリダイレクトを実装するJavaScriptを使えば、クライアント側(ブラウザ側)で非常にシンプルにページリダイレクトを実現できます。特別なライブラリやサーバー側の設定は不要で、window.location.assign()メソッドを呼び出すだけでOKです。訪問者を新し

  2. JavaScript関数で名前付き引数を使う方法|分割代入で簡単に実現するテクニック

    JavaScriptにおける名前付き引数とは? Pythonなどの言語には「名前付き引数(キーワード引数)」という機能が標準で備わっていますが、JavaScriptにはこの機能が組み込まれていません。しかし、オブジェクトの分割代入(Destructuring)を活用することで、名前付き引数と同じ挙動を簡単に実現できます。 基本的な仕組み 関数の引数としてオブジェクトを1つ受け取り、その中から必要なプロパティを分割代入で取り出します。各プロパティにはデフォルト値も同時に指定できるため、引数が省略された場合でもエラーにならず安全に処理できます。 サンプルコード 以下は、オブジェクトを引数として渡し