A430 例外処理の基本

プログラムを実行する際にエラーが起こることがあります。通常はエラーが起こった際、そこでプログラムは止まりますが、エラーが起こってもプログラムに止まって欲しくない場合もあります。今回はその際に用いる構文について紹介します。

例外処理とは

例外処理とは、プログラムに異常が発生した場合に現在の処理を中断し、別の処理を行わせる処理のことをいいます。

例題処理の際に用いる構文

try-catch文

try-catch文は try{処理A}catch(e){処理Aでエラーが起きた際に行う処理} という形で記載します。引数eにはエラーメッセージが格納されます。

JavaScript
try {
//処理A
} catch (e) {
//処理Aでエラーが起きた際に行う処理
}

JavaScript
try {
  console.log(name);
} catch (e) {
  console.log('エラーが発生しました');
}

出力結果

JavaScript
エラーが発生しました

変数nameを定義していないので本来エラーになるはずですが、エラー時の例外処理をcatchブロックの中に記載しているのでそちらが処理されております。

finally文

finally文は try{処理A}catch(e){処理Aでエラーが起きた際に行う処理} finally{最後に実行を行う処理} という形で記載します。finally ブロックは例外が発生するかどうかにかかわらず実行され、例外が発生した場合、finally ブロックは例外を処理する catch ブロックがなくても実行されます。

JavaScript
try {
  console.log(name);
} catch (e) {
  console.log('エラーが発生しました');
} finally {
  console.log('最後の処理を実行しました');
}

出力結果

JavaScript
エラーが発生しました
最後の処理を実行しました

上記の様に、catchブロック内の処理が実行された後に、finallyブロック内の処理が実行されます。

throw文

throw文は「throw 発生させる例外の式;」という形で記載します。

JavaScript
let point = 1;
try {
  if (point < 50){
    throw '不合格です';
  };
  console.log('合格です');
} catch(e) {
  console.error(e);
}

出力結果

JavaScript
不合格です

例題

以下コードの出力値はどれか

JavaScript
let number = 100;
try {
  if (point < 80){
    throw '不合格です';
  };
  console.log('合格です');
} catch(e) {
  console.error(e);
}
  1. ReferenceError: point is not defined
  2. ReferenceError: number is not defined
  3. 合格です
  4. 不合格です
回答

1. ReferenceError: point is not defined
変数pointは定義されていないので、エラーメッセージがeに格納され、console.error(e)にてエラーが出力されるため。

---