Сначала я нашел в cplusplus.com следующей цитаты:Поймать с несколькими параметрами
Формат улова похож на регулярную функцию, которая всегда имеет по крайней мере один параметр.
Но я попытался это:
try
{
int kk3,k4;
kk3=3;
k4=2;
throw (kk3,"hello");
}
catch (int param)
{
cout << "int exception"<<param<<endl;
}
catch (int param,string s)
{
cout<<param<<s;
}
catch (char param)
{
cout << "char exception";
}
catch (...)
{
cout << "default exception";
}
Компилятор не жалуется на бросок с фигурными скобками и несколькими аргументами. Но на самом деле он жалуется на улов с несколькими параметрами, несмотря на то, что говорится в ссылке. Я смущен. try
и catch
допускают эту множественность или нет? И что, если бы я хотел создать исключение, которое включает более одной переменной с одним типом или без него.
Читайте на оператора запятой. Вы не бросаете '(kk3," hello ")', вы бросаете '" hello "'. – delnan
, так что это только один аргумент в обоих? –