>  기사  >  백엔드 개발  >  C++ 함수에 대한 예외 처리 및 예외 지정자

C++ 함수에 대한 예외 처리 및 예외 지정자

WBOY
WBOY원래의
2024-04-12 17:33:02668검색

예외 처리는 예외 발생, 포착 및 처리를 포함한 런타임 오류를 처리합니다. 예외 지정자는 noException(expr)(예외를 발생시키지 않도록 지정) 및 throw()(모든 유형의 예외가 발생될 수 있음을 지정)를 포함하여 함수가 발생시킬 수 있는 예외 유형을 지정하는 데 사용됩니다. 실제 경우 print_file 함수는 throw() 지정자를 사용하고 try-catch 블록을 사용하여 기본 함수에서 std::runtime_error 예외를 포착하고 파일 열기 오류를 처리합니다.

C++ 函数的异常处理和异常说明符

C++ 함수의 예외 처리 및 예외 지정자

예외 처리는 런타임 오류 처리를 위한 핵심 메커니즘으로, 예외 발생, 예외 포착, 예외 처리의 세 부분으로 나뉩니다. C++에서는 예외가 예외 클래스로 표현됩니다.

예외 발생

예외를 발생시키려면 throw 키워드를 사용하세요. 예외 클래스 또는 특정 기능을 가진 개체는 예외로 사용될 수 있습니다. 예: throw 关键字抛出异常。异常类或具有特定功能的任意对象都可以作为异常。例如:

throw std::runtime_error("失败!");

捕获异常

使用 try-catch 块捕获异常。try 块包含可能抛出异常的代码,而 catch 块指定如何处理不同类型的异常。例如:

try {
  // 可能抛出异常的代码
} catch (const std::runtime_error& e) {
  // 处理 std::runtime_error 异常
} catch (const std::exception& e) {
  // 处理所有其他异常
}

异常说明符

异常说明符添加到函数签名中,以指定函数可以抛出的异常类型。有两种异常说明符:

  • noexcept(expr):指定函数不抛出任何异常,其中 expr 为常量表达式。
  • throw():指定函数可以抛出任何类型的异常。

实战案例

考虑一个读取文件并将其打印到控制台的函数。该函数可能会由于文件不存在或访问被拒绝而引发异常。我们可以使用异常说明符和 try-catch 块来处理这些情况。

#include <iostream>
#include <fstream>

void print_file(const std::string& file_name) {
  std::ifstream file(file_name);
  if (!file.is_open()) throw std::runtime_error("无法打开文件!");

  std::string line;
  while (std::getline(file, line)) {
    std::cout << line << std::endl;
  }
}

int main() {
  try {
    print_file("test.txt");
  } catch (const std::runtime_error& e) {
    std::cerr << e.what() << std::endl;
  }

  return 0;
}

在函数 print_file 中,异常说明符 throw() 指定该函数可以抛出任何类型的异常。在 main 函数中,我们使用 try-catch 块来处理异常。如果打开文件时发生错误,则会抛出 std::runtime_errorrrreee

🎜예외 포착🎜🎜🎜예외를 포착하려면 try-catch 블록을 사용하세요. try 블록에는 예외를 발생시킬 수 있는 코드가 포함되어 있는 반면, catch 블록은 다양한 유형의 예외를 처리하는 방법을 지정합니다. 예: 🎜rrreee🎜🎜예외 지정자 🎜🎜🎜예외 지정자는 함수 시그니처에 추가되어 함수가 발생할 수 있는 예외 유형을 지정합니다. 두 가지 예외 지정자가 있습니다: 🎜
  • 🎜noException(expr)🎜: 지정된 함수는 어떤 예외도 발생시키지 않습니다. 여기서 expr는 상수 표현식입니다.
  • 🎜throw()🎜: 지정된 함수는 모든 유형의 예외를 발생시킬 수 있습니다.
🎜🎜실용예🎜🎜🎜파일을 읽고 콘솔에 출력하는 함수를 생각해 보세요. 파일이 존재하지 않거나 액세스가 거부되었기 때문에 이 함수에서 예외가 발생할 수 있습니다. 예외 지정자와 try-catch 블록을 사용하여 이러한 상황을 처리할 수 있습니다. 🎜rrreee🎜print_file 함수에서 예외 지정자 throw()는 함수가 모든 유형의 예외를 발생시킬 수 있음을 지정합니다. main 함수에서는 try-catch 블록을 사용하여 예외를 처리합니다. 파일을 여는 동안 오류가 발생하면 std::runtime_error 예외가 발생하고 오류 메시지가 콘솔에 인쇄됩니다. 🎜

위 내용은 C++ 함수에 대한 예외 처리 및 예외 지정자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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