// throw() 和throw有什么区别？请举例说明
// 1. throw()是函数声明，表示该函数不会抛出任何异常
// 2. throw是抛出异常的关键字
// 3. throw()是函数声明，throw是语句
#include <bits/stdc++.h>

using namespace std;

void show(int n) throw() // throw() 表示异常抛出限制: 不抛出任何异常
// void show(int n) throw(int ) // throw(int) 表示只抛出 int 类型的异常
{
    if (n == 0)
    {
        throw 0; // throw 0 表示抛出 int 类型的异常
    }
    cout << "n = " << n << endl;
}

int main()
{
    try
    {
        show(0);
    }
    catch (const int &e)
    {
        cout << "捕获异常: " << e << endl;
    }
    catch (...)
    {
        cout << "捕获其他异常" << endl;
    }
    return 0;
}
