21xrx.com
2024-12-22 23:52:36 Sunday
登录
文章检索 我的文章 写文章
如何使用C++来捕获异常
2023-06-25 20:56:53 深夜i     --     --
C++ 异常 捕获 处理 try catch

C++是一种高级程序设计语言,它提供了异常处理机制,可以捕获程序中发生的异常,并妥善处理。异常处理是C++编程中的重要环节,下面介绍如何使用C++来捕获异常。

1.定义异常类型

在C++中,可以使用类来定义异常类型。异常类是继承自std::exception的类,通常需要包含异常信息并提供构造函数和析构函数。可以使用以下代码定义一个简单的异常类:


class MyException : public std::exception {

public:

  MyException(const char* what) : m_what(what) {}

  virtual const char* what() const throw() { return m_what.c_str(); }

private:

  std::string m_what;

};

在这个例子中,我们定义了一个继承自std::exception的MyException类,该类包含一个成员变量m_what,它可以存储异常信息。构造函数将给定的异常信息存储在变量m_what中,而what()方法返回存储在变量m_what中的异常信息。

2.抛出异常

如果程序中发生异常,可以使用throw语句抛出异常。在C++中,可以抛出任何类型的异常,例如:


throw MyException("something went wrong");

在这个例子中,我们抛出了一个MyException异常,并提供了异常信息。

3.捕获异常

在C++中,可以使用try-catch语句捕获异常。try语句块包含可能会抛出异常的代码,而catch语句块用于捕获异常并处理它们。例如:


try

  // some code that might throw an exception

catch (const MyException& e) {

  std::cout << "Exception caught: " << e.what() << std::endl;

}

在这个例子中,我们在try语句块中编写了一些可能会抛出MyException异常的代码。如果发生异常,它将被捕获并在catch语句块中进行处理。我们使用了const引用来捕获异常,这可以提高效率。在catch语句块中,我们打印了异常信息。

4.多个catch语句

一个try语句块可以有多个catch语句块来捕获不同类型的异常。例如:


try

  // some code that might throw an exception

catch (const MyException& e) {

  std::cout << "MyException caught: " << e.what() << std::endl;

}

catch (const std::exception& e) {

  std::cout << "Exception caught: " << e.what() << std::endl;

}

在这个例子中,我们有两个catch语句块。第一个捕获MyException异常,并打印其信息。第二个捕获任何std::exception异常,并打印其信息。注意,抛出MyException异常时,它将首先被第一个catch语句块捕获,因为它是从std::exception继承而来的。

在编写C++程序时,使用异常处理机制可以使程序更加健壮和可靠。通过定义自己的异常类型和使用try-catch语句块,我们可以捕获并妥善处理程序中发生的异常。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复