exception handling
プログラム実行中におきた“普通ではない”ことで、何か特別な処理が必要なことを例外(exception)と言う。
・ハードウェア(およびOS)で検出される例外:ゼロによる除算、メモリ保護違反、ファイルの終端まで読んだ、など。
・ソフトウェアで検出される例外:配列の添字が範囲外である、など。
・ユーザが定義した例外
例外が起きても、例外処理を行って実行を続けられるようにしたい。
例外処理を統一的に記述し、十告示に発生したエラーをより容易に管理することができる。
3つのキーワード
1〜9までの数を入力せよ。
-1
エラー:0以下の入力
プログラム実行中におきた“普通ではない”ことで、何か特別な処理が必要なことを例外(exception)と言う。
・ハードウェア(およびOS)で検出される例外:ゼロによる除算、メモリ保護違反、ファイルの終端まで読んだ、など。
・ソフトウェアで検出される例外:配列の添字が範囲外である、など。
・ユーザが定義した例外
例外が起きても、例外処理を行って実行を続けられるようにしたい。
例外処理を統一的に記述し、十告示に発生したエラーをより容易に管理することができる。
3つのキーワード
- tryブロック
- 例外の発生を検出する。
- throw文
- tryブロック内で例外を検知すると、その例外コードがcatchに投げられる。tryブロック内から実行するか、ブロック内のプログラムコードから呼び出す関数内で実行する。
- catch文
- 対応する例外を駆り引数として捕獲し処理する。tryブロックとcatch文は、同じブロック内にならなければならない。tryブロックに複数のcatch文を対応づけてもよい。対応するcatch文のない例外を投げるとプログラムは異常終了する。例外自体にアクセスする必要がない場合は、catch句で型だけを指定することもできる。
try{ // try ブロック 例外を検出する処理 throw 例外; } catch(型 arg){ // catch ブロック 例外時の処理 }
#include<iostream> using namespace std; int main(){ int num; cout << "1〜9間での数を入力せよ。\n"; cin >> num; try{ if(num<=0)throw "0以下の入力"; if(num>=10)throw "10以上の入力"; cout << num << "が入力されました。\n"; } catch(char *err){ cout << "エラー:" << err << "\n"; return 1; } return 0; }
1〜9までの数を入力せよ。
-1
エラー:0以下の入力
このページへのコメント
DfYppC Great blog article.Really looking forward to read more.
Zeia0H Really appreciate you sharing this article.Much thanks again. Will read on...