C++のtry/catch構文とは?例外処理の基本をやさしく解説!
C++において、予期しないエラー(例外)に対応するための基本構文が try / catch です。
この構文を使うことで、プログラムがクラッシュせずに安全に処理を続けられるようになります。
try/catch構文の基本
C++の例外処理は、次のような流れで構成されます:
tryブロック:エラーが起こる可能性のある処理を囲む
throw:例外を投げる(発生させる)
catchブロック:投げられた例外を受け取って処理する
基本構文
try {
// 例外が起こるかもしれない処理
if (何かの条件) {
throw エラーの値;
}
} catch (型 受け取る変数) {
// エラー時の処理
}
使用例:ゼロ除算チェック
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 0;
try {
if (b == 0) {
throw "ゼロでは割り算できません";
}
cout << a / b << endl;
} catch (const char* msg) {
cout << "例外発生: " << msg << endl;
}
return 0;
}
この例では、0で割ろうとする場合に throw で文字列の例外を投げ、catch で受け取って処理しています。
複数のcatchブロック
C++では、異なる型の例外ごとに複数のcatch文を用意できます。
try {
// 何らかの処理
} catch (int e) {
cout << "int型の例外: " << e << endl;
} catch (const char* msg) {
cout << "文字列の例外: " << msg << endl;
}
catch(...)ですべての例外を捕捉
catch(...) を使うと、例外の型に関係なくすべて捕捉できます。
try {
// 処理
} catch (...) {
cout << "不明な例外を捕捉しました" << endl;
}
try/catch構文のメリット
- プログラムが強制終了しにくくなる
- エラー処理を分離できる
- エラー原因の特定と対処が容易になる
注意点
- catchできなかった例外はプログラムを強制終了させます
- 例外の多用はパフォーマンスに影響する可能性があるため注意
まとめ
C++のtry / catch構文は、例外処理の中核です。
異常が発生したときにプログラムが止まるのではなく、柔軟にエラー対応できるようになります。
まずはゼロ除算や配列の範囲外アクセスなど、基本的なエラーで例外処理の効果を体験してみましょう。