C语言和C++都有一个专门为调试而准备的工具函数---assert函数。这个函数是在assert.h库文件里定义的。
实例1:assert函数应用
1 #include <cassert> 2 //assert()函数需要有一个参数,它将测试这个输入参数的真或者假状态 3 //如果为真 Do nothing 4 //如果为假 Do something 5 int main() 6 { 7 int i = 20; 8 assert( i == 65);//如果括号内为真,则过;假则中断程序 9 10 return 0; 11 }
同样为了对付潜在的编程错误(尤其是在运行时的错误),捕获异常是一种完全不同的方法。简单说,异常就是与预期不相符合的反常现象。
注:每条try语句至少要有一条配对的catch语句。必须定义catch语句以便让它接收一个特定类型的参数。
当某个try语句块里执行过throw语句,它后面的所有语句(截止到这个try语句块末尾)将永远不会被执行。
如果try语句块无法找到一个与之匹配的catch语句块,它抛出的异常将中止程序的执行。
实例2:捕获异常(try,catch,throw)
1 #include <iostream> 2 #include <climits> 3 4 using namespace std; 5 unsigned long returnFactorial(unsigned short num) throw(const char*); 6 7 int main() 8 { 9 unsigned short num = 0; 10 cout << "请输入一个整数:"; 11 while( !(cin>>num) || (num < 1) ) 12 { 13 cin.clear();//清楚状态 14 cin.ignore(100,'\n'); //清除缓存区 15 cout << "请输入一个整数:"; 16 } 17 cin.ignore(100,'\n'); 18 try 19 { 20 unsigned long factorial = returnFactorial(num);//如果异常,则抛出字符型的*e异常 21 //直接跳转到catch继续执行 22 cout << num << "的阶乘值是:" << factorial; 23 } 24 catch(const char *e)//如果正常则不执行,抛出异常则执行 25 { 26 cout << "error"; 27 } 28 return 0; 29 } 30 31 unsigned long returnFactorial(unsigned short num) throw(const char*) 32 { 33 unsigned long sum = 1; 34 unsigned long max = ULONG_MAX; 35 36 for(int i = 1;i <= num; i++) 37 { 38 sum *= i; 39 max /= i; 40 } 41 if(max < 1) 42 { 43 throw"悲催。。。该基数太大,无法在该计算机计算求出阶乘值。\n"; 44 } 45 else 46 { 47 return sum; 48 } 49 }标签:语句,try,函数,C++,assert,num,catch,第三十二 From: https://www.cnblogs.com/ybqjymy/p/17640576.html