回答
重新排除的异常可以有不同的类型。 这将编译并正确运行在VS2012
// exceptions
#include <iostream>
using namespace std;
int main() {
try{
try
{
throw 20;
}
catch (int e)
{
cout << "An exception occurred. Exception Nr. " << e << '\n';
throw string("abc");
}
}
catch (string ex)
{
cout<<"Rethrow different type (string): "<< ex<<endl;
}
return 0;
}
输出:
发生异常。例外编号20
重新抛出不同类型(字符串):ABC
这个例子证实了我的信息是错误的,我在eclipse cdt上运行它,并且它成功了。谢谢。 –
但是,'throw;'总是会重新抛出现有的异常,导致一些巧妙的技巧。 –
等等,为什么'20'不在你的样本输出中? –
不一定。只要你抓住它,它取决于你如何处理它。您可以抛出一个相同的异常或一个全新的异常。或者,什么都不做。
throw;
全部由自己在catch块重新抛出刚捕捉到的异常。
catch(...)
{
cleanup();
throw;
}
但你也完全:如果您需要(例如)在响应异常进行一些清理操作,但仍然允许它upstack传播到那里可以更充分地处理的地方,这是有用自由地做到这一点:
catch(SomeException e)
{
cleanup();
throw SomeOtherException();
}
,事实上它常常方便任何类型的您记录了你扔来完成这一功能,以翻译由你叫成成代码抛出的异常。
感谢您的帮助。 –
- 1. catch块中的函数抛出异常
- 2. 在PHP Try Catch块中抛出异常
- 3. 异常抛出空的catch块
- 4. 抛出新的异常VS Catch块
- 5. try-catch块内的异常抛出
- 6. 在catch块中抛出异常请求另一个try catch块
- 7. 在catch块内抛出异常
- 8. 在catch块内抛出一个异常
- 9. 异常抛出终于和catch块
- 10. MVC3处理catch块中的异常并抛出异常
- 11. 异常抛出catch和最后。 CLR行为与try-catch块
- 12. 可以抛出异常的java中的方法的try/catch块
- 13. 从catch块中抛出嵌套异常......这是明智的吗?
- 14. 另一个类抛出的catch异常?
- 15. 空的catch但异常仍然抛出
- 16. 在catch块中重新抛出异常是否有意义?
- 17. 停止在嵌套try-catch块中抛出异常
- 18. 如何在java中再次抛出异常相同的类型?
- 19. 重新抛出一个有嵌套异常的catch块的异常吗?
- 20. 抛出异常后不会去正确的catch块
- 21. 抛出其他和周围catch块相同的异常
- 22. 重新抛出从catch块的异常时
- 23. 使用Xamarin Insights处理try/catch块外部抛出的异常
- 24. 在catch块中抛出NullPointerException
- 25. 上次抛出的异常包含以前抛出的异常?
- 26. 如何在catch块中抛出异常在使用throw的java中工作,以及如何在finally块执行后再次抛出控件?
- 27. 为什么不进入catch块而没有抛出异常
- 28. 抛出自定义的异常收集信息并再次抛出
- 29. 如果在catch块中抛出异常,是否会执行finally块?
- 30. 当catch块和finally块在Java中抛出异常时会发生什么?
我当然希望不会;或者我的异常处理代码的很大一部分是错误的! ;) – dlf