C 例外のカプセル化により、コードの可読性と保守性が向上し、エラー情報を処理ロジックから分離できます。 std::Exception を継承した例外クラスを定義することで、エラー情報をカプセル化できます。例外をスローするには throw を使用し、例外をキャッチするには try-catch を使用します。実際の場合、ファイルを読み取る関数は例外クラスを使用して、ファイルのオープンに失敗したエラーをカプセル化します。この関数を呼び出すと、例外がキャッチされ、エラー メッセージが出力されます。
#C 関数の例外処理における例外のカプセル化
C 関数では、例外のカプセル化により可読性と保守性が向上します。例外をカプセル化することで、エラー情報を処理ロジックから分離し、より明確で理解しやすいコードを作成できます。例外クラスの定義
まず、エラー情報をカプセル化する例外クラスを定義する必要があります。このクラスは、標準ライブラリの例外クラスstd::Exception から継承する必要があります。例:
class MyException : public std::exception { public: MyException(const std::string& message) : std::exception(message) {} };
関数での例外のスロー
関数で例外をスローするのは簡単です。throw キーワードの後に例外オブジェクトを使用できます。
void myFunction() { if (someCondition) { throw MyException("发生了一些错误!"); } }
関数での例外の捕捉
例外を捕捉するには、 # を使用できます。 ##try ブロックと catch
ブロック: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>int main() {
try {
myFunction();
}
catch (MyException& e) {
std::cout << "错误:" << e.what() << std::endl;
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
ファイルを読み取り、ファイルの総数をカウントする関数を考えてみましょう。ファイル内の行:
int countLines(const std::string& filepath) { std::ifstream ifs(filepath); if (!ifs.is_open()) { throw MyException("无法打开文件!"); } int count = 0; std::string line; while (std::getline(ifs, line)) { ++count; } return count; }
この関数では、
MyException クラスを使用して、ファイルのオープン失敗のエラー メッセージをカプセル化します。この関数を呼び出すと、例外をキャッチしてエラー メッセージを出力できます: int main() {
try {
int lineCount = countLines("inputFile.txt");
std::cout << "文件共 " << lineCount << " 行" << std::endl;
}
catch (MyException& e) {
std::cout << "错误:" << e.what() << std::endl;
}
}
以上がC++ 関数の例外処理で例外をカプセル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。