// ============================================================================ // p1c07_09 — 7.3.2 编写自己的异常类 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; // --- 原文片段 [58954474:8] 7.3.2 编写自己的异常类 --- //自定义异常类 class MyOutOfRange:public exception { public: MyOutOfRange(const string errorInfo) { this->m_Error = errorInfo; } MyOutOfRange(const char * errorInfo) { this->m_Error = string( errorInfo); } virtual ~MyOutOfRange() { } virtual const char* what() const noexcept { return this->m_Error.c_str() ; } string m_Error; }; class Person { public: Person(int age) { if (age <= 0 || age > 150) { //抛出异常 越界 //cout << "越界" << endl; //throw out_of_range("年龄必须在0~150之间"); //throw length_error("长度异常"); throw MyOutOfRange(("我的异常 年龄必须在0~150之间")); } else { this->m_Age = age; } } int m_Age; }; void test01() { try { Person p(151); } catch ( out_of_range & e ) { cout << e.what() << endl; } catch (length_error & e) { cout << e.what() << endl; } catch (MyOutOfRange e) { cout << e.what() << endl; } } // --- main --- int main() { test01(); return 0; }