我对使用异常和try {} catch {}
块的想法是那些用于错误处理的。
我正在阅读关于例外的Bjarne's Strostrup FAQ page部分,我遇到了这个
还有其他用例 - 在其他语言中很流行 - 但是 在C ++中不是惯用的,并且故意不被C ++很好地支持 实现(这些实现基于 假设异常用于错误处理)。
其他语言(例如C#或java)的异常的其他用法是什么?
答案 0 :(得分:2)
在Python中,本着“请求宽恕而非许可”的精神,异常经常被用作应用程序的正常控制流程的一部分。例如,在字典中查找元素时(在C ++中考虑std::unordered_map
):
try:
my_value = my_dict["the answer to life, the universe and everything"]
except KeyError:
my_value = 42
在C ++中,这不被视为“错误”的情况;异常只应用于与“不可预测”的东西交互,如硬件设备和(在某种程度上)操作系统。
答案 1 :(得分:0)
另一个用途是java中的InterrutedException
。它允许在监视器或休眠线程上等待wait
或sleep
。