C++ 関数例外処理の try/catch ブロックはどのように機能しますか?

WBOY
リリース: 2024-04-15 21:27:01
オリジナル
425 人が閲覧しました

C では、try ブロックには例外をスローする可能性のあるコードが含まれており、catch ブロックは特定の種類の例外を処理するために使用されます。 try/catch ブロックを使用すると、プログラムが正常に実行を再開または継続できるため、予期せぬ終了が防止されます。例外が発生すると、try { ... } catch (const std::Exception& e) { ... } など、一致する型修飾子を持つ catch ブロックに制御が渡されます。

C++ 函数异常处理中的 try/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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート