C メンバー関数のエラー処理メカニズムには、エラー コード、アサーション、例外メカニズムが含まれます。エラー コードはエラー値を直接返します。アサーションは仮定をチェックし、そうでない場合は例外をスローします。例外は重大なエラーを捕捉し、try-catch ブロックを通じて処理します。実際のケースでは、容量が不十分な場合、Vector クラスの Push_back() 関数は std::bad_alloc 例外をスローします。ユーザーは try-catch を通じて例外をキャッチして処理できます。
C のオブジェクト メソッド (メンバー関数) は複雑な処理に役立ちますビジネス ロジックとエラー 条件は非常に重要です。この記事では、メンバー関数でのエラー処理と例外メカニズムの使用法を詳しく調査し、実際の事例を示します。
最も直接的なエラー処理方法は、エラー コードを使用することです。エラー コードは、特定のエラー状態を表す整数またはカスタム列挙値です。メンバー関数では、errno
変数を設定することでエラー コードを返すことができます。
int MyFunction() { if (... /* 发生错误 */) { errno = EINVAL; // 设置错误码为无效参数 return -1; // 返回错误指示符 } // ... 其它代码 }
アサーションは、プログラム内の仮定をチェックするために使用されます。条件が満たされない場合は、例外がスローされます (後述)。メンバー関数では、assert()
マクロを使用してアサーションを実装できます。
void MyOtherFunction() { assert(ptr != nullptr); // 检查指针是否为 nullptr // ... 其它代码 }
例外は、重大なエラー状態を処理するための強力なメカニズムです。例外により、エラーが発生した場所から指定された場所に実行を転送できます。 C では、例外の構文は次のとおりです。
try { // 可能发生异常的代码 } catch (exceptionType1& e) { // 处理 exceptionType1 类型异常 } catch (exceptionType2& e) { // 处理 exceptionType2 类型异常 } catch (...) { // 处理所有类型异常 }
メンバー関数では、throw
キーワードを使用して例外をスローできます。例外は、標準ライブラリの std::Exception
とそのサブクラスにすることも、カスタム例外タイプにすることもできます。
void MyThrowingFunction() { if (... /* 发生严重错误 */) { throw std::runtime_error("严重错误!"); } // ... 其它代码 }
は、メンバー関数で渡すことができます。 try-catch
ブロックで例外をキャッチします。キャプチャされた例外オブジェクトは、catch
句への参照によって渡すことができます。
void MyCatchingFunction() { try { MyThrowingFunction(); } catch (std::runtime_error& e) { // 处理 std::runtime_error 类型的异常 } catch (...) { // 处理所有类型异常 } }
以下を含む Vector
クラスがあるとします。メンバー Functionpush_back()
、この関数はベクトルの末尾に要素を追加します。ベクトルに追加された要素の数が事前に割り当てられた容量を超える場合、push_back()
関数は std::bad_alloc
例外をスローする必要があります。
class Vector { public: void push_back(int element) { try { // 尝试添加元素 // 如果容量不足,会抛出 std::bad_alloc 异常 elements.push_back(element); } catch (std::bad_alloc& e) { // 捕获并重新抛出 std::bad_alloc 异常 throw; } } private: std::vector<int> elements; // 使用标准库的 std::vector 作为底层存储 };
Vector
クラスを使用する場合、push_back()
関数によってスローされた例外を次のようにキャプチャできます。
以上がC++のメンバ関数の詳細説明:オブジェクトメソッドのエラー処理と例外の仕組みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。