引自C ++ Primer,第4版:
异常与catch异常说明符匹配的规则比用于匹配参数类型的参数的规则要严格得多。大多数转换都不允许异常的类型和catch说明符必须完全匹配,只有几个可能的差异:
1.允许从nonconst到const的转换。也就是说,非const对象的throw可以匹配指定的catch来获取const引用。
你能举个例子来解释第一个学期吗?非常感谢!
答案 0 :(得分:4)
这是一个例子
int main()
{
try
{
int x = 1;
throw x;
}
catch (const int& e)
{
cout << "caught " << e << '\n';
}
}
你抛出一个非常量int
,但你用一个const int&
来抓住它。