目次
C++ 例外をキャッチして処理する方法
例外のキャッチ
抛出异常
实战案例
ホームページ バックエンド開発 C++ C++ 例外をキャッチして処理するにはどうすればよいですか?

C++ 例外をキャッチして処理するにはどうすればよいですか?

Jun 05, 2024 pm 10:33 PM
c++ 例外処理

C++ 例外は、予期しないイベントを処理するためのメカニズムです。例外は try ブロックを通じてキャッチされ、catch ブロックを使用して処理されます。まず、 throw ステートメントを使用して例外をスローします。例外の種類には、標準ライブラリ例外クラスまたはカスタム例外クラスを指定できます。実際のケースでは、除算器がゼロの場合、除算関数は runtime_error をスローし、例外は main 関数の catch ブロックを通じてキャッチされて処理されます。

C++ 例外をキャッチして処理するにはどうすればよいですか?

C++ 例外をキャッチして処理する方法

C++ 例外は、予期しないイベントを処理するためのメカニズムです。これにより、プログラムはクラッシュを引き起こすことなくエラーを適切に処理できるようになります。

例外のキャッチ

例外をキャッチするには、次の構文を使用します:

try {
  // 容易抛出异常的代码
} catch (exception& e) {
  // 异常处理代码
}
ログイン後にコピー

try ブロックには、例外をスローする可能性のあるコードが含まれています。例外がスローされた場合、制御は対応する catch ブロックに移されます。 catch ブロック パラメーターは、特定の例外タイプを処理するために使用される参照を指定します。 try 块包含可能抛出异常的代码。如果抛出异常,控制权将转移到相应的 catch 块。catch 块参数指定用于处理特定异常类型的引用。

抛出异常

可以通过使用 throw 语句来抛出异常:

throw exception();
ログイン後にコピー

exception 可以是标准库异常类(例如 runtime_error)或自定义异常类。

实战案例

考虑以下代码示例:

#include <exception>

int divide(int a, int b) {
  if (b == 0) {
    throw std::runtime_error("除数不能为零");
  }
  return a / b;
}

int main() {
  try {
    int result = divide(10, 0);
    std::cout << result << std::endl;
  } catch (const std::runtime_error& e) {
    std::cout << "错误:" << e.what() << std::endl;
  }
}
ログイン後にコピー

main 函数中,我们调用 divide 函数,并尝试捕获可能抛出的任何异常。如果除数为零,divide 函数会抛出一个 runtime_error

例外をスローする🎜🎜例外は、throw ステートメントを使用してスローできます。 🎜rrreee🎜Exception は、標準ライブラリの例外クラス (runtime_error など) にすることができます。コード &gt;) またはカスタム例外クラス。 🎜🎜実践例🎜🎜 次のコード例を考えてみましょう: 🎜rrreee🎜 <code>main 関数で、divide 関数を呼び出し、スローされる可能性のある例外をキャッチしようとします。除算器がゼロの場合、divide 関数は runtime_error をスローし、エラー メッセージを表示します。 🎜

以上がC++ 例外をキャッチして処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ STL でカスタム コンパレータを実装するにはどうすればよいですか? C++ STL でカスタム コンパレータを実装するにはどうすればよいですか? Jun 05, 2024 am 11:50 AM

C++ STL でカスタム コンパレータを実装するにはどうすればよいですか?

C++ オブジェクトのレイアウトはメモリに合わせて調整され、メモリの使用効率が最適化されます。 C++ オブジェクトのレイアウトはメモリに合わせて調整され、メモリの使用効率が最適化されます。 Jun 05, 2024 pm 01:02 PM

C++ オブジェクトのレイアウトはメモリに合わせて調整され、メモリの使用効率が最適化されます。

C++ で戦略デザイン パターンを実装するにはどうすればよいですか? C++ で戦略デザイン パターンを実装するにはどうすればよいですか? Jun 06, 2024 pm 04:16 PM

C++ で戦略デザイン パターンを実装するにはどうすればよいですか?

Golang と C++ の類似点と相違点 Golang と C++ の類似点と相違点 Jun 05, 2024 pm 06:12 PM

Golang と C++ の類似点と相違点

C++ STL コンテナをコピーするにはどうすればよいですか? C++ STL コンテナをコピーするにはどうすればよいですか? Jun 05, 2024 am 11:51 AM

C++ STL コンテナをコピーするにはどうすればよいですか?

C++ スマート ポインターの基本的な実装原則は何ですか? C++ スマート ポインターの基本的な実装原則は何ですか? Jun 05, 2024 pm 01:17 PM

C++ スマート ポインターの基本的な実装原則は何ですか?

Actor モデルに基づいて C++ マルチスレッド プログラミングを実装するにはどうすればよいですか? Actor モデルに基づいて C++ マルチスレッド プログラミングを実装するにはどうすればよいですか? Jun 05, 2024 am 11:49 AM

Actor モデルに基づいて C++ マルチスレッド プログラミングを実装するにはどうすればよいですか?

C++ 例外処理はカスタム エラー処理ルーチンをどのようにサポートしますか? C++ 例外処理はカスタム エラー処理ルーチンをどのようにサポートしますか? Jun 05, 2024 pm 12:13 PM

C++ 例外処理はカスタム エラー処理ルーチンをどのようにサポートしますか?

See all articles