程序的异常处理就是——大致来说先假装不会产生任何的异常,写好处理正常的代码,之后再写异常的代码(利用c++的异常处理);
例子
int main() {
// cout << "g" << endl;
int double_milk;
int milk;
double dpg;
try {
cout << "open starct" << endl;
cin >> double_milk; cout << "end double_milk" << endl;
cin >> milk;
cout << milk << "end milk" << endl;
if (milk <= 0) {
throw double_milk;
}
dpg = double_milk / static_cast<double>(milk);//这个是类型转换。小盘子装大盘子可以,会浪费,大盘在小盘子会溢出;
cout << "我们的程序没异常" << endl; //char->
//short-> unsigned int-> unsigned long->flout-> double;
//c 语言中强制转换- new_trye_name; expression ;表达式;名称;
// 名称 = static_cast<new_type_name>(名称);
}// const_cast.reinterpret_cast.dynamic_cast; static_cast;
catch (int e) {
cout << "我们的程序出现问题;" << endl;
}
cout << "over" << endl;
return 0;
}
c++中的强制转换: static_cast; 名称 =static_cast<new_type_name>(名称);
关于try throw catch;
程序执行到throw这后,程序将会停止,如果try后面有catch 的话,那么就会跳转到catch的程序中;
如果没有运行到throw()这句话,那么就将会忽略后期的catch()的程序内容;
catch (int e) {
cout << "我们的程序出现问题;" << endl;
}
catch(int e)是什么东西;
e 我们叫他catch块参数,catch 不是个函数;他要做两件事情:
1 catch (int ) 我们的加类型参数。这个是用来捕捉什么抛出的类型;
2: catch快参数为捕捉的抛出值指定名称,所以在catch写代码的时候可对与捕捉的代码进行处理;
关于catch 这块的位置是不能够乱放的;位置的错误会导致程序有的东西无法实现。进而无法捕捉catch;