0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C++の例外処理まとめ

Posted at

はじめに

C++の例外処理は、プログラムの実行中に発生するエラーや異常な状態を扱うための重要な機能です。


1. 例外処理の基礎

1.1 例外とは

例外とは、プログラムの実行中に発生するエラーや予期しない状況を通知するための機構です。例外処理を用いることで、エラー発生時に適切な対策を講じ、プログラムのクラッシュを防ぐことができます。

1.2 try-catchブロックの基本構文

C++における例外処理は、trycatchthrowのキーワードを使用します。

try {
    // 例外が発生する可能性のあるコード
} catch (例外型 変数名) {
    // 例外を処理するコード
}

2. 例外の投げ方とキャッチ方法

2.1 例外を投げる(throw)

例外はthrowキーワードを使って投げます。投げられた例外は、対応するcatchブロックでキャッチされるまでスタックを巻き戻します。

void divide(int a, int b) {
    if (b == 0) {
        throw std::invalid_argument("ゼロで除算しようとしました。");
    }
    std::cout << "結果: " << a / b << std::endl;
}

2.2 例外をキャッチする(catch)

throwされた例外は、対応する型のcatchブロックでキャッチされます。

try {
    divide(10, 0);
} catch (const std::invalid_argument& e) {
    std::cerr << "エラー: " << e.what() << std::endl;
}

3. 標準例外クラス

C++標準ライブラリには、多くの例外クラスが用意されています。これらを活用することで、一般的なエラー状況を簡潔に扱えます。

3.1 主な標準例外クラス

  • std::exception:すべての標準例外の基本クラス。
  • std::logic_error:プログラムの論理エラーを示す。
    • std::invalid_argument
    • std::domain_error
    • std::length_error
    • std::out_of_range
  • std::runtime_error:実行時エラーを示す。
    • std::overflow_error
    • std::underflow_error
    • std::range_error

4. 独自の例外クラスの作成

標準例外クラスでは対応できない特殊なエラー状況には、独自の例外クラスを作成します。

4.1 基本的な独自例外クラスの実装

class MyException : public std::exception {
private:
    std::string message;

public:
    explicit MyException(const std::string& msg) : message(msg) {}

    const char* what() const noexcept override {
        return message.c_str();
    }
};

使用例:

try {
    throw MyException("独自の例外が発生しました。");
} catch (const MyException& e) {
    std::cerr << e.what() << std::endl;
}

5. まとめ

  • 例外処理はエラーや異常を安全に扱うための重要な機構です。
  • trycatchthrowを適切に使って、例外を投げてキャッチします。
  • 標準例外クラスを活用し、必要に応じて独自の例外クラスを作成します。
  • 例外安全性を確保するために、リソース管理やプログラムの状態管理に注意します。
0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?