C++でのtryとcatchの例外処理の方法は何ですか?
C++では、tryとcatch文を使用して例外を捕捉して処理することができます。tryブロックは例外が発生する可能性のあるコードを囲むために使用され、catchブロックは捕捉された例外を処理するために使用されます。
tryとcatchステートメントの一般的なフォーマットは以下の通りです。
try {
// 可能会引发异常的代码
}
catch (ExceptionType1 e1) {
// 处理 ExceptionType1 类型的异常
}
catch (ExceptionType2 e2) {
// 处理 ExceptionType2 类型的异常
}
catch (...) {
// 处理其他类型的异常
}
tryブロックには、例外を引き起こす可能性のあるコードを配置することができます。tryブロックで例外が発生すると、プログラムはすぐにcatchブロックに移動してその例外を処理します。catchブロックのパラメータータイプは、捕捉できる例外のタイプを指定します。例外のタイプがcatchブロックのパラメータータイプと一致する場合、そのcatchブロックが実行されます。catchブロックのパラメータータイプが省略記号(…)の場合、任意のタイプの例外をキャッチすることができます。
異なる種類の例外を処理するために、複数のcatchブロックを使用することができます。catchブロックは、特定の例外を最初に処理し、一般的な例外をその後に処理するように順番を設定できます。catchブロック内では、例外処理のコードを記述することができます。例えば、エラーメッセージの表示や修復操作の実行などが含まれます。
以下は、tryとcatchステートメントの使用を示す簡単な例です:
#include <iostream>
int main() {
try {
int a = 10;
int b = 0;
int result = a / b;
}
catch (const std::exception& e) {
std::cout << "发生异常: " << e.what() << std::endl;
}
return 0;
}
上記のコードでは、tryブロック内で除算を行っており、除数が0の場合にはstd::exception型の例外が発生します。catchブロックではその例外をキャッチし、例外情報を表示します。
tryとcatch文は、通常ランタイムエラーを処理するために使用されますが、構文エラーではありません。C++では、tryとcatchを使用して、標準ライブラリが提供する例外型をキャッチすることもできますし、独自の例外クラスを作成して独自の例外処理メカニズムを実装することもできます。