1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ノート】JavaScript基礎④(例外処理)

1
Last updated at Posted at 2025-09-05

はじめに

目的

本記事はJavaScript&TypeScriptの基礎知識を体系的に学び直して、生成AIに頼りすぎず自力でコーディングできるようになることを目的としています。
学んだ内容のアウトプットとして、シリーズ形式で書いていきます。

ゴール

  • TypeScriptでフルスタックアプリを個人開発する
  • チーム開発でタスクを渡された際に、メンバーのコードを読んで理解したり自分で実装したりできる状態にする(調べる回数をできるだけ少なくする)

シリーズ記事

【ノート】JavaScript基礎①(変数const, let・データ型と型変換)
【ノート】JavaScript基礎②(条件分岐)
【ノート】JavaScript基礎③(配列操作)

例外とは

プログラム実行時に発生する、予期せぬエラーのこと。
Javaではプログラムで対処できるエラーを例外(Exception)、対処できないものをエラー(Error)と区別するが、JavaScript,TypeScriptでは厳密な区別はないらしい。
エラーが発生しそうな処理に対して、あらかじめ対応する処理を用意しておくことにより、意図せずプログラムが止まったり壊れたりするのを防ぐ。

例外が発生する場面

以下のように、外部プログラムとのやり取りと、データの操作を行うときに発生しやすい。
自プログラム以外でのエラー(サーバーエラー、ネットワークエラー、外部エラーなど)が考えられるため、適切なエラー処理が必要になる。
※理解があいまいなため調査中

  • APIなどの通信
  • データベースへのアクセスおよび操作
  • ファイル操作
  • JSONデータの変換(パース)

例外処理の構文

try-catch-finally文

try {
      //例外が発生する可能性がある処理
      //ここで例外が発生したら、catch節の処理へ移る
} catch (error) {//引数errorにはエラー情報をもつErrorオブジェクトが入る
      //例外が発生した場合の処理(エラーメッセージ出力など)
} finally {
      //エラーを捕まえても動作させたい処理(めったに使わない)
      //tryまたはcatchの処理のあとに実行される
}

※注意点

  • tryのみ記述はNG(必ずtrycatchまたはfinallyをセットで使う)
  • catchfinallyはどちらかを省略できる(だいたいfinallyが省略される)
  • tryfinallyの組み合わせでは例外をキャッチできない

throw文

意図的にエラーを発生させる(例外を投げる)処理。
想定外の処理結果をエラーとして扱いたいときに使う。
try-catchで対応しないとプログラムが異常終了するので注意。

try {
     throw new Error("エラー発生")
} catch (error) {
     console.log(error.message) //エラー発生
}

例外はどこに投げられるのか

結論、呼び出し元の関数に投げられる。
main.js

import { throwException } from "./throwException.js";

const exceptionHandler = () => {
    try {
        throwError();//エラー発生➡catchへ
    } catch (err) {
        console.error(err);
    } finally {
        //エラーを捕まえても動作させたい処理があればここに書く
    }
};
exceptionHandler();

throwException.js

export const throwException = () => {
    //thwow文:意図的に例外(エラー)を発生させる
    throw new Error("エラー発生")
}

上記の例では以下の順番で処理が進む。
1.exceptionHandler()のtry節でthrowError()が呼び出される
2.throwError()でエラー発生、呼び出し元のexceptionHandler()にエラー情報が投げられる
3.エラーを検知したのでcatch節の処理を実行

エラーの握りつぶしに注意!

エラーをcatch文で受け取ったにもかかわらず何もしないことを、俗にエラーを握り潰すという。

import { throwException } from "./throwException.js";

const exceptionHandler = () => {
    try {
        throwError();
    } catch (err) {
       //エラーをcatchしたが何もしない
       console.log("Hello World")
    } 
exceptionHandler(); //Hello World

throwException.js

export const throwException = () => {
    throw new Error("エラー発生")
}

上記の例では、ログだけ見ると適切に処理が終わったように見える。
しかし、実際は投げたエラーが残ったまま後の処理に移る
そのため、エラーは必ずcatch文で処理すること。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?