C++におけるthrowの役割は何ですか。
C++では、throwキーワードは例外を投げるために使用されます。プログラムがエラーや例外の状況に遭遇したとき、制御を例外処理プログラムに移行させて通常のプログラムの流れを中断します。throwを使用することで、プログラムは例外オブジェクトを例外処理プログラムに渡すことができ、エラーや例外状況をよりうまく処理し、プログラムの信頼性と保守性を向上させることができます。
プログラムがエラーや異常状況に遭遇した場合、throwを使って例外を投げ、例外処理プログラムに制御を渡すことができます。例外処理プログラムはこれらの例外をキャッチし処理したり、上位の例外処理プログラムに例外を引き継ぐことができます。例外が処理できる場所に至るまで、例外を引き続き渡すことになります。例外処理中には、掃除の手続きを行ったり、リソースを解放したりして、プログラムが正常に動作することを保証します。
throwキーワードは通常、tryキーワードとcatchキーワードと一緒に使用されます。tryは例外が発生する可能性があるコードブロックを例外処理領域としてマークするために使用され、catchは例外を捕捉して処理します。例外が発生すると、プログラムは最も近いcatchブロックにジャンプして処理されます。
例えば、以下のコードでは、除数が0の場合、std::runtime_error型の例外が投げられます。
int divide(int a, int b) {
if (b == 0) {
throw std::runtime_error("Divide by zero exception");
}
return a / b;
}
int main() {
try {
int result = divide(10, 0);
std::cout << "Result: " << result << std::endl;
} catch (const std::runtime_error& e) {
std::cout << "Exception caught: " << e.what() << std::endl;
}
return 0;
}
上記のコードでは、throwステートメントが制御をcatchブロックに渡し、例外をキャッチして処理し、例外情報を出力します。