// ============================================================================
//  p1c07_07  —  7.2.6 异常的多态使用
//  来源：川大 C++/LinuxC wiki「02.Qt方向」
//  说明：本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用
//        // --- 原文片段 [pageId:blockIdx] --- 标注出处。
//        已做最小修正（笔误/平台移植），详见 docs/ERRATA.md。
// ============================================================================

#include <iostream>
using namespace std;

// --- 原文片段 [58954474:6]  7.2.6 异常的多态使用 ---
//异常基类
class BaseException{
public:
	virtual void printError_2(){};
};

//空指针异常
class NullPointerException : public BaseException{
public:
	virtual void printError_2(){
		cout << "空指针异常!" << endl;
	}
};
//越界异常
class OutOfRangeException : public BaseException{
public:
	virtual void printError_2(){
		cout << "越界异常!" << endl;
	}
};

void doWork(){

	throw NullPointerException();
}

void test()
{
	try{
		doWork();
	}
	catch (BaseException& ex){
		ex.printError_2();
	}
}

// --- main ---
int main() {
    test();
    return 0;
}
