【发布时间】:2014-02-25 19:25:32
【问题描述】:
我无法理解异常的语法。我有一个必须能够抛出异常的类模板map<T>。下面的代码是正确的,是用来捕获异常的。
try
{
map<int> m;
m["everything"] = 42;
}
catch(map<int>::Uninitialized&)
{
cout << "Uninitialized map element!" << endl;
}
我试图创建一个派生自 runtime_error 的类,然后将其从我的类中抛出。但看来我的逻辑有问题。
class Uninitialized : public runtime_error
{
public:
Uninitialized() : runtime_error("error") {}
};
T operator[] (const char index[]) const
{
throw Uninitialized();
return value;
}
【问题讨论】:
-
您遇到了哪些编译器错误?你的预期结果是什么,你实际得到了什么?请澄清您的问题。
-
错误多得我数不过来xD 我基本上用什么来捕获异常的代码。我相信这个问题与我投掷的方式和我抓的方式有关。
-
旁白:鉴于已经有一个
std::map,您最好使用不同的名称。 -
你的逻辑在什么方面看起来有缺陷?你的前提是什么,你得出了什么结论?
-
异常被捕获的方式确实与被抛出的方式相对应。它被捕获为未命名的非常量引用?
标签: c++ templates exception exception-handling