> 백엔드 개발 > C++ > 본문

C++ 함수 예외 및 클래스 예외: 여러 예외 처리 전략

WBOY
풀어 주다: 2024-05-03 17:18:01
원래의
310명이 탐색했습니다.

C++ 예외 처리는 함수 예외와 클래스 예외의 두 가지 유형으로 나뉩니다. 여러 예외 처리 전략에는 하나씩 처리하고 기본 클래스 캡처가 포함됩니다. 실제 전투에서는 예외 처리 전략을 사용하여 다양한 소스의 예외를 처리하고 예외 유형에 따라 다양한 오류 메시지를 인쇄할 수 있습니다.

C++ 函数异常与类异常:多重异常处理策略

C++ 함수 예외 및 클래스 예외: 다중 예외 처리 전략

개요

예외 처리는 런타임 오류를 처리하는 C++의 강력한 메커니즘입니다. 이를 통해 프로그램은 예외가 발생할 때 정상적으로 응답하고 복구할 수 있습니다. C++에는 함수 예외와 클래스 예외라는 두 가지 유형의 예외가 있습니다. 이 기사에서는 이러한 두 가지 예외 유형을 살펴보고 여러 예외 처리 전략을 사용하여 이를 동시에 처리하는 방법을 보여줍니다.

함수 예외

함수 예외는 함수에서 직접 발생하는 예외입니다. throw 키워드와 그 뒤에 예외 유형 또는 개체를 사용합니다. 예: throw 关键字,后面跟一个异常类型或对象。例如:

void divide(int a, int b) {
  if (b == 0)
    throw std::runtime_error("Division by zero");
}
로그인 후 복사

类异常

类异常是由用户自定义类抛出的异常。它们使用 throw 关键字,后面跟一个异常类实例。例如:

class NegativeNumberException : std::exception {
public:
  const char *what() const override {
    return "Cannot accept negative numbers";
  }
};

void checkNumber(int n) {
  if (n < 0)
    throw NegativeNumberException();
}
로그인 후 복사

多重异常处理策略

有时,函数或类可能同时抛出多种异常。在这种情况下,可以使用多重异常处理策略来处理所有异常。以下策略是常用的:

1. 逐一处理:

try {
  // 调用可能抛出异常的代码
} catch (std::runtime_error &e) {
  // 处理 std::runtime_error 异常
} catch (NegativeNumberException &e) {
  // 处理 NegativeNumberException 异常
} catch (...) {
  // 处理任何其他异常
}
로그인 후 복사

2. 捕获基类:

try {
  // 调用可能抛出异常的代码
} catch (std::exception &e) {
  // 处理所有 std::exception 派生的异常
} catch (...) {
  // 处理任何其他异常
}
로그인 후 복사

实战案例

考虑以下代码,它调用 dividecheckNumber

#include <iostream>
using namespace std;

void divide(int a, int b);
void checkNumber(int n);

int main() {
  try {
    divide(5, 0);
  } catch (std::runtime_error &e) {
    cout << "Division by zero occurred" << endl;
  } catch (NegativeNumberException &e) {
    cout << "Negative number detected" << endl;
  } catch (...) {
    cout << "Unknown exception occurred" << endl;
  }

  try {
    checkNumber(10);
  } catch (...) {
    cout << "Error in number check" << endl;
  }

  return 0;
}
로그인 후 복사

Class 예외

클래스 예외는 사용자 정의 클래스에서 발생한 예외입니다. throw 키워드와 예외 클래스 인스턴스를 사용합니다. 예: 🎜
Division by zero occurred
Error in number check
로그인 후 복사
🎜다중 예외 처리 전략🎜🎜때때로 함수나 클래스가 동시에 여러 예외를 발생시킬 수 있습니다. 이 경우 다중 예외 처리 전략을 사용하여 모든 예외를 처리할 수 있습니다. 일반적으로 사용되는 전략은 다음과 같습니다. 🎜🎜1. 하나씩 처리: 🎜rrreee🎜2. 기본 클래스 캡처: 🎜rrreee🎜실제 사례 🎜🎜다음 코드를 고려하세요. , dividecheckNumber 함수를 호출하고 다양한 예외 조건에 따라 메시지를 인쇄합니다. 🎜rrreee🎜출력: 🎜rrreee

위 내용은 C++ 함수 예외 및 클래스 예외: 여러 예외 처리 전략의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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