>  기사  >  백엔드 개발  >  C++ 함수에서 예외를 처리하는 방법은 무엇입니까?

C++ 함수에서 예외를 처리하는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-04-23 15:24:01861검색

C++에서는 try-catch 문을 통해 예외가 처리됩니다. try 블록의 코드에서 예외가 발생할 수 있습니다. catch 블록은 표준 예외 또는 사용자 지정 예외를 포착합니다. noException 키워드는 함수가 최적화를 위해 예외를 발생시키지 않을 것임을 선언합니다.

C++ 函数中如何处理异常?

C++ 함수에서 예외를 처리하는 방법은 무엇입니까?

C++에서 예외는 세 가지 주요 부분을 포함하는 try-catch 문을 통해 처리됩니다. try-catch 语句处理,包括三个主要部分:

try {
  // 代码块,可能抛出异常
}
catch (const std::exception& e) {
  // 捕获标准异常
}
catch (const MyCustomException& e) {
  // 捕获自定义异常
}

实战案例:

假设我们有一个函数 divide,它计算两个数的商,但当分母为 0 时抛出异常:

int divide(int num, int denom) {
  try {
    if (denom == 0) {
      throw std::runtime_error("除数不能为 0");
    }
    return num / denom;
  }
  catch (const std::exception& e) {
    std::cout << "错误: " << e.what() << std::endl;
  }
}

在主函数中,我们可以调用 divide 函数并捕获异常:

int main() {
  try {
    int dividend = 10;
    int divisor = 0;
    int result = divide(dividend, divisor);
    std::cout << dividend << " / " << divisor << " = " << result << std::endl;
  }
  catch (const std::runtime_error& e) {
    std::cout << e.what() << std::endl;
  }
}

输出:

错误: 除数不能为 0

注意:

  • 函数中也可以抛出自定义异常,通过创建自定义异常类并继承 std::exception
  • 使用 noexceptrrreee
실용 사례: 🎜🎜🎜 divide 함수가 있다고 가정합니다. code >에서는 두 숫자의 몫을 계산하지만 분모가 0일 때 예외가 발생합니다. 🎜rrreee🎜메인 함수에서 <code>divide 함수를 호출하고 예외를 잡을 수 있습니다: 🎜rrreee🎜 출력: 🎜 rrreee🎜🎜참고: 🎜🎜
  • 사용자 정의 예외 클래스를 생성하고 std::Exception을 상속하여 함수에서 사용자 정의 예외를 발생할 수도 있습니다. 🎜
  • 함수가 최적화를 위해 예외를 발생시키지 않을 것임을 선언하려면 noException 키워드를 사용하세요. 🎜🎜

위 내용은 C++ 함수에서 예외를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.