>>>>所有代码都是在win10+vs2017上运行<<<<
1、处理除数为0
#include "pch.h"
#include<cstdlib> #include<iostream> #include<string> using namespace std; class Error { public: virtual void showErrorMsg() = 0; }; class MyExecptionForZero : public Error { private: string errMsg; public: MyExecptionForZero(string str) : errMsg(str) {}; void showErrorMsg() { cout << errMsg << endl; } }; void myTeset(int i, int j) { MyExecptionForZero m("除数为0啦"); cout << "I want to get the result for j/i ..." << endl; if (i == 0) { throw m; } else { cout << j / i << endl; } } int main(int argc, char *argv[]) { int i = 0; int j = 4; try { myTeset(i, j); } catch (Error &e) { e.showErrorMsg(); } system("PAUSE"); return EXIT_SUCCESS; }
2、访问数组越界
#include "pch.h" #include<iostream> using namespace std; enum index { underflow, overflow }; int array_index(int *a, int n, int index); class error { virtual void showerrormsg() = 0; }; int main() { int *a = new int[10]; for (int i = 0; i < 10; i++) a[i] = i; cout << a[100] << endl; try { cout << a[100] << endl; cout << array_index(a, 10, 5) << endl; cout << array_index(a, 10, -1) << endl; cout << array_index(a, 10, 15) << endl; } catch (index e) { if (e == underflow) { cout << "index underflow!" << endl; exit(-1); } if (e == overflow) { cout << "index overflow!" << endl; exit(-1); } } return 0; } int array_index(int *a, int n, int index) { if (index < 0) throw underflow; if (index > n - 1) throw overflow; return a[index]; }
原文:https://www.cnblogs.com/qiang-upc/p/12197229.html