c++异常处理(使用虚函数)
来源:互联网 发布:勃起后笔直向上 知乎 编辑:程序博客网 时间:2024/05/21 14:42
#include <iostream>using namespace std;const int DefaultSize = 10;class Array{public:Array(int itsSize = DefaultSize);~Array(){delete[] pType;}const int & operator[](int offSet) const;int & operator[](int offSet);int GetitsSize() const {return itsSize;}class xBoundary {};class xSize{public:xSize(int size):itsSize(size){}~xSize(){}int GetSize() { return itsSize; }virtual void PritError(){cout << "xiabiaofashengcuowu" << itsSize << endl;}protected:int itsSize;};class xZero:public xSize {public:xZero(int size):xSize(size){}virtual void PrintError(){cout << "bunengshiling" << endl;}};class xNegative :public xSize {public:xNegative(int size) :xSize(size) {}virtual void PrintError(){cout << "bunengshifu" <<xSize::itsSize<< endl;}};class xTooSmall :public xSize {public:xTooSmall(int size) :xSize(size) {}virtual void PrintError(){cout << "taixiao" << endl;}};class xTooBig :public xSize {public:xTooBig(int size) :xSize(size) {}virtual void PrintError(){cout << "taida" << endl;}};private:int *pType;int itsSize;};int main(){Array a;Array intArray(20);try{Array b(-12);for (int j = 0; j < 100; j++){intArray[j] = j;cout << "int" << j << "ok" << endl;}}catch (Array::xBoundary){cout << "yuejie" << endl;}catch (Array::xSize& exp){exp.PritError();}/*catch (Array::xZero){cout << "buneng0" << endl;}catch (Array::xTooBig){cout << "taida" << endl;}catch (Array::xTooSmall){cout << "taixiao" << endl;}catch (Array::xNegative theException){cout << "bunengshifushu" <<theException.GetSize()<< endl;}catch (...){cout << "weizhi" << endl;}*/cin.get();return 0;}Array::Array(int Size): itsSize(Size){if (Size == 0)throw xZero(Size);if (Size < 0)throw xNegative(Size);if (Size < 10)throw xTooSmall(Size);if (Size > 30000)throw xTooBig(Size);pType = new int[Size];for (int i = 0; i < Size; i++){pType[i] = 0;}}const int & Array::operator [](int offSet) const{// TODO: 在此处插入 return 语句int size = this->GetitsSize();if (offSet >= 0 && offSet < size){return pType[offSet];}throw xBoundary();}int & Array::operator [](int offSet){// TODO: 在此处插入 return 语句int size = this->GetitsSize();if (offSet >= 0 && offSet < size){return pType[offSet];}throw xBoundary();}
try中方可能出错代码 throw抛出错误 catch捕获
0 0
- c++异常处理(使用虚函数)
- C语言实现异常处理(使用 setjmp 和 longjmp 函数)
- 虚函数与异常处理
- C++ 异常处理 terminate函数使用
- 使用atexit函数进行异常处理
- C异常处理(1)
- C异常处理(2)
- C++(2):异常处理
- Objective-C中使用@try处理异常
- Objective-C中使用@try处理异常
- Objective-C中使用@try处理异常
- Objective-C中使用@try处理异常
- 异常处理(二、C语言的异常处理)
- Visual C++异常处理机制原理与应用(三)——C/C++结构化异常处理之try-except异常处理的使用(上)
- Visual C++异常处理机制原理与应用(四)——C/C++结构化异常处理之try-except异常处理的使用(中)
- Visual C++异常处理机制原理与应用(五)——C/C++结构化异常处理之try-except异常处理的使用(下)
- C语言中异常处理的两个函数
- c语言中的异常处理,setjmp 与 longjmp函数
- 设计模式之单例模式
- SQL server 2008 R2 MSSQLSERVER 无法启动 error code 17058.
- hdu 1852 Beijing 2008(快速幂取模)
- VC中程序调用Js自定义函数的注意事项
- scala 集合
- c++异常处理(使用虚函数)
- Struts2,继续java之旅
- cocoapos的使用
- 如何让 WebBrowser控件 使用BeforeNavigate2(...)屏蔽特定页面
- 回文树 BZOJ 2565 最长双回文串
- iOS 实现时间线列表效果
- JVM结构分析
- 《股票大作手回忆录(修订版)》读后感
- C语言大纲——数据类型