C++类模板中使用异常知识点

来源:互联网 发布:mac废纸篓清空不了 编辑:程序博客网 时间:2024/06/11 08:59

这一篇主要记录了类模板中使用异常类的知识点

类模板中使用异常类的时候,异常类同样可以进行模板化

下面通过这个小案例来明白这个知识点

#include <iostream>#include <cstring>using namespace std;class Error :public exception{};template <class T>class Myerror{public:void showError(){   if(std::strcmp(typeid(T).name(),"int") == 0){      cout << "int error" << endl;   }else if(std::strcmp(typeid(T).name(),"char") == 0){      cout << "char error" << endl;   }}};template <class T>class PrintTest{public:PrintTest(T t){  if(t < 10){  throw &Myerror<T>();  }else if( t < 'B'){      throw &Myerror<T>();  }}template<class T>class MyPrint{public:MyPrint(T t){  if(t < 20){  throw &Myerror<T>();  }else if(t < 'B'){      throw &Myerror<T>();  }}};};template<class T>void testException(T data){try{PrintTest<T> print2(data);}catch(Myerror<T>* error){error->showError();}}template<class T>void testException2(T data){try{PrintTest<T>::MyPrint<T> mp(data);}catch(Myerror<T>* error){error->showError();}}void main(){testException2<char>('A');cin.get();}

std标准异常的使用:

#include <iostream>#include <stdexcept>using namespace std;class Student{private:int *pstart;public:Student(){pstart = new int[5];}int operator[](int index){   if(index < 0){   throw std::out_of_range("ba la la");   }else if(index  < 2){   throw std::logic_error("hahahha");   }   return pstart[index];}};void main(){try{Student stu;cout << stu[1] << endl;}catch(exception ex){cout << "error : because of" << ex.what() << endl;}    cin.get();}


0 0
原创粉丝点击