异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。
异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。
- throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。
- catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。
- try: try 块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。
#include<iostream> using namespace std; double devide(int a,int b){ if(b==0){ throw("分母不能为零"); } return (a/b); } int main(){ int a=12; int b=0; try{ int c=devide(a,b); }catch(const char* p){ cerr<<p<<endl; } return 0; }
抛出了一个类型为 const char* 的异常,因此,当捕获该异常时,我们必须在 catch 块中使用 const char*
自定义异常类
#include<iostream> #include<exception> using namespace std; class myException:public exception{ public: const char* what() const throw(){ return "输入错误"; } }; int main(){ myException m; try{ throw myException(); }catch(myException &e){ cout<<e.what(); } return 0; }
what() 是异常类提供的一个公共方法,它已被所有子异常类重载。这将返回异常产生的原因。
const throw()不是函数,这个东西叫异常规格说明,表示what函数可以抛出异常的类型,类型说明放到()里,这里面没有类型,就是声明这个函数不抛出异常
通常函数不写后面的就表示函数可以抛出任何类型的异常