예외 처리는 예외 발생, 포착 및 처리를 포함한 런타임 오류를 처리합니다. 예외 지정자는 noException(expr)(예외를 발생시키지 않도록 지정) 및 throw()(모든 유형의 예외가 발생될 수 있음을 지정)를 포함하여 함수가 발생시킬 수 있는 예외 유형을 지정하는 데 사용됩니다. 실제 경우 print_file 함수는 throw() 지정자를 사용하고 try-catch 블록을 사용하여 기본 함수에서 std::runtime_error 예외를 포착하고 파일 열기 오류를 처리합니다.
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) { // 处理所有其他异常 }
异常说明符
异常说明符添加到函数签名中,以指定函数可以抛出的异常类型。有两种异常说明符:
expr
为常量表达式。实战案例
考虑一个读取文件并将其打印到控制台的函数。该函数可能会由于文件不存在或访问被拒绝而引发异常。我们可以使用异常说明符和 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_error
rrreee
try-catch
블록을 사용하세요. try
블록에는 예외를 발생시킬 수 있는 코드가 포함되어 있는 반면, catch
블록은 다양한 유형의 예외를 처리하는 방법을 지정합니다. 예: 🎜rrreee🎜🎜예외 지정자 🎜🎜🎜예외 지정자는 함수 시그니처에 추가되어 함수가 발생할 수 있는 예외 유형을 지정합니다. 두 가지 예외 지정자가 있습니다: 🎜expr
는 상수 표현식입니다. try-catch
블록을 사용하여 이러한 상황을 처리할 수 있습니다. 🎜rrreee🎜print_file
함수에서 예외 지정자 throw()
는 함수가 모든 유형의 예외를 발생시킬 수 있음을 지정합니다. main
함수에서는 try-catch
블록을 사용하여 예외를 처리합니다. 파일을 여는 동안 오류가 발생하면 std::runtime_error
예외가 발생하고 오류 메시지가 콘솔에 인쇄됩니다. 🎜위 내용은 C++ 함수에 대한 예외 처리 및 예외 지정자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!