// 异常接口声明

// 如: 结构体作为异常对象
#include <iostream>
#include <cstring>
using namespace std;

struct ERROR_S
{
    string title; // 错误信息
    int errnum;   // 错误码
} error_1;        // ERROR_S error_1; // error_1 是一个全局变量

void test1(int n) throw(ERROR_S, int)
{
    if (n == 0)
    {
        error_1.title = "n 参数不能为 0";
        error_1.errnum = 1;
        throw error_1;
    }
    else if (n == 1)
    {
        throw 2;
    }
    cout << "n = " << n << endl;
}

int main()
{
    try
    {
        test1(1);
    }
    catch (const ERROR_S &error)
    {
        cout << "捕获异常: " << error.title << endl;
        cout << "错误码: " << error.errnum << endl;
    }
    catch (...)
    { // ... 表示其他异常
        cout << "捕获其他异常" << endl;
    }
    return 0;
}
