当在C++代码中使用异常处理时,我们必须使用“try-catch”块来捕捉和处理异常。下面是一些关于“C++中try catch的用法小结”的攻略:
一、try-catch块的基本用法
使用try-catch块来捕捉异常,代码块包围了可能引发异常的代码。
try {
//可能引发异常的代码
}
catch(ExceptionType name) {
//处理程序
}
这里,try
块中的代码可能抛出ExceptionType
类型的异常。如果这样,异常会直接按照catch
代码块的内容来处理。在catch
代码块中,我们可以处理异常,输出异常信息或者对其他应该处理的事情进行处理。
二、try、catch和throw的用法
当我们需要在代码中手动抛出异常,并在另一个地方捕捉到它时,我们需要使用throw
语句。
try {
//可能引发异常的代码
throw ExceptionType(name);
}
catch(ExceptionType name) {
//处理程序
//输出异常信息等
}
在这种情况下,我们首先运行代码,在抛出异常之前:“try”块中的任何异常代码都无法往下执行。一旦抛出异常,我们就跳转到“catch”块中,并使用“name”参数来传递异常。
三、示例1:抛出自定义异常
在此示例中,我们定义了一个类“Exception”,它可以表示在该类中输入负数时所引发的自定义异常。在这种情况下,会在“try”块中调用“setNumber”函数,并根据异常输出了一个相应的消息。
class Exception {
private:
int num;
public:
Exception(int n) {
num = n;
}
int getNum() {
return num;
}
};
void setNumber(int num) {
if(num < 0)
throw Exception(num);
}
int main() {
try {
setNumber(-3);
}
catch(Exception& e ) {
std::cout<<"输入的值为"<<e.getNum()<<",不能为负数"<<std::endl;
}
return 0;
}
四、示例2:嵌套的try…catch块
这里的示例中包含了两个嵌套的try-catch块,以便实现更完整的异常处理。在这里,我们使用了一个C++标准库函数“stoi”,它可以将字符串类型转换为整数类型。但如果字符串无法转换,则抛出异常,并将其捕捉并处理。
int main() {
std::string s = "-5";
int number1, number2;
try {
number1=std::stoi(s);
try{
number2=std::stoi("not_a_number");
}
catch(std::invalid_argument& e){
std::cout<<"无法解析的数字"<<std::endl;
}
}
catch (std::invalid_argument& e) {
std::cout<<"无法解析的数字"<<std::endl;
}
return 0;
}
以上示例展示了异常处理的基本原理,C++中try-catch的用法以及使用自定义异常处理程序和嵌套的try-catch块来使异常处理更加完整和灵活。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++中try catch的用法小结 - Python技术站