C では、try ブロックには例外をスローする可能性のあるコードが含まれており、catch ブロックは特定の種類の例外を処理するために使用されます。 try/catch ブロックを使用すると、プログラムが正常に実行を再開または継続できるため、予期せぬ終了が防止されます。例外が発生すると、try { ... } catch (const std::Exception& e) { ... } など、一致する型修飾子を持つ catch ブロックに制御が渡されます。
C の try/catch ブロックで関数例外を処理する方法
例外処理は、ソフトウェア開発における重要なメカニズムです。異常な状態が発生した場合に、プログラムを正常に再開または実行を続行します。 C では、try
ブロックと catch
ブロックを使用して、関数内でスローされた例外を処理できます。
try/catch ブロックの仕組み
try
ブロックは、例外をスローする可能性のあるコードを含めるために使用されます。 try
ブロック内のコードが正常に実行された場合は、すぐに続くコード行に直接ジャンプします。 try
ブロック内のコードが例外をスローした場合、制御は対応する catch
ブロックに渡されます。
catch
ブロックは、特定の型の例外を処理するために使用され、その後には常に型修飾子が続きます。たとえば、次のコード スニペットは、タイプ std::Exception
のすべての例外を処理します。
try { // 可能引发异常的代码 } catch (const std::exception& e) { // 处理异常 }
実用的なケース
関数があるとします。 read_file()
、ファイルからデータを読み取ります。ファイルが存在しない場合、またはファイルを読み取れない場合、この関数は std::ifstream::failure
例外を発生させる可能性があります。次のコード スニペットは、try
ブロックと catch
ブロックを使用してこの例外を処理する方法を示しています。
void read_file(const std::string& filename) { std::ifstream file(filename); // 文件读取操作可能会引发 std::ifstream::failure 异常 try { // 读文件操作 } catch (const std::ifstream::failure& e) { std::cerr << "读取文件失败: " << e.what() << std::endl; } }
この場合、 if read_file()
関数はファイルを正常に読み取ることができません。プログラムはエラー メッセージを出力し、実行を続行します。
注:
try
ブロックには複数の catch
ブロックを含めることができ、各 catch
ブロックは、さまざまな例外タイプを処理するために使用されます。 try
ブロック内のコードが例外をスローしない場合、catch
ブロックは実行されません。 以上がC++ 関数例外処理の try/catch ブロックはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。