> 백엔드 개발 > C++ > C++ 예외 처리는 사용자 정의 오류 처리 루틴을 어떻게 지원합니까?

C++ 예외 처리는 사용자 정의 오류 처리 루틴을 어떻게 지원합니까?

王林
풀어 주다: 2024-06-05 12:13:56
원래의
657명이 탐색했습니다.

C++ 예외 처리를 사용하면 예외를 발생시키고 try-catch 블록을 사용하여 이를 잡아 런타임 오류를 처리하는 사용자 정의 오류 처리 루틴을 생성할 수 있습니다. 1. 예외 클래스에서 파생된 사용자 정의 예외 클래스를 생성하고 what() 메서드를 재정의합니다. 2. 예외를 발생시키려면 throw 키워드를 사용합니다. 3. 예외를 포착하고 가능한 예외 유형을 지정합니다. 처리.

C++ 异常处理如何支持自定义错误处理例程?

C++ 예외 처리: 사용자 정의 오류 처리 루틴 지원

C++에서 예외 처리는 런타임 오류를 처리하기 위한 강력한 메커니즘입니다. 이를 통해 사용자 정의 오류 처리 루틴을 생성하여 우아하고 효율적인 방식으로 오류 조건을 처리할 수 있습니다.

Exception 클래스

C++에서 예외는 Exception 클래스 또는 파생 클래스로 표현됩니다. 사용자 정의 예외를 발생시키려면 고유한 파생 클래스를 만들고 what() 메서드를 재정의하세요. 이 메서드는 오류를 설명하는 문자열을 반환합니다. exception 类或其派生类表示。要抛出一个自定义异常,请创建您自己的派生类并覆盖 what() 方法。此方法返回一个描述错误的字符串。

class MyCustomException : public std::exception {
public:
  const char* what() const noexcept override {
    return "This is my custom exception.";
  }
};
로그인 후 복사

抛出异常

使用 throw 关键字抛出异常。它接受一个异常对象作为参数:

throw MyCustomException();
로그인 후 복사

捕捉异常

使用 try-catch 块捕捉异常。每个 catch 子句都指定一个可以处理的异常类型。如果发生匹配类型的异常,将执行该子句中的代码:

try {
  // 可能抛出异常的代码
} catch (MyCustomException& e) {
  // 处理 MyCustomException 异常
} catch (std::exception& e) {
  // 处理所有其他类型的异常
}
로그인 후 복사

实战案例

让我们考虑一个打开文件并对其进行读取的函数。如果无法打开文件,则函数应抛出我们的自定义异常:

#include <fstream>
#include <iostream>

using namespace std;

// 自定义异常类
class FileOpenException : public std::exception {
public:
  const char* what() const noexcept override {
    return "Could not open the file.";
  }
};

// 打开文件并读取其内容的函数
string read_file(const string& filename) {
  ifstream file(filename);
  if (!file.is_open()) {
    throw FileOpenException();
  }

  string contents;
  string line;
  while (getline(file, line)) {
    contents += line + '\n';
  }
  file.close();

  return contents;
}

int main() {
  try {
    string contents = read_file("file.txt");
    cout << contents << endl;
  } catch (FileOpenException& e) {
    cout << "Error: " << e.what() << endl;
  } catch (std::exception& e) {
    cout << "An unexpected error occurred." << endl;
  }
  
  return 0;
}
로그인 후 복사

在上面的示例中,read_file() 函数抛出 FileOpenException 异常,当文件无法打开时启动。在 main() 函数中,我们使用 try-catchrrreee

🎜예외 발생🎜🎜🎜예외를 발생시키려면 throw 키워드를 사용하세요. 예외 객체를 매개변수로 받아들입니다: 🎜rrreee🎜🎜Catch 예외🎜🎜🎜 try-catch 블록을 사용하여 예외를 포착합니다. 각 catch 절은 처리할 수 있는 예외 유형을 지정합니다. 일치하는 유형의 예외가 발생하면 이 절의 코드가 실행됩니다: 🎜rrreee🎜🎜 실제 예 🎜🎜🎜 파일을 열고 읽는 함수를 생각해 보겠습니다. 파일을 열 수 없는 경우 함수는 사용자 정의 예외를 발생시켜야 합니다. 🎜rrreee🎜 위의 예에서 read_file() 함수는 파일이 시작될 때 FileOpenException 예외를 발생시킵니다. 열 수 없을 때. main() 함수에서는 try-catch 블록을 사용하여 예외를 포착하고 이에 따라 처리합니다. 🎜

위 내용은 C++ 예외 처리는 사용자 정의 오류 처리 루틴을 어떻게 지원합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿