众所周知,异常是很好的特征,但它们很慢。因此,使用返回标志是一种好习惯。现在如果我使用返回标志,但是以防万一我将代码包装在try-catch中,以便100%确定它会在异常情况下无效。我的意思是我的代码主要用于标志,而不是基于异常处理。现在这是一个好习惯吗?它的速度慢吗?
答案 0 :(得分:1)
答案是,在各种编译器,语言和技术中,try-catch
(或类似)在没有发生任何例外情况时的性能成本很低,应予以忽视。
原因是(通常)所有try
确实是以特定方式标记堆栈,这是一个廉价的操作。引发异常时是工作完成的时间。然后系统必须扫描堆栈以查找catch
块,这可能很昂贵。
这也适用于像try-catch-finally
这样的结构(在拥有它的语言中)。 finally
块只是通过正常的控制转移来执行。
这是一个相当通用的答案,具体的编译器可能表现不同,但原则仍然存在:try
便宜并且提出异常是昂贵的。每当您的设计需要时,请随意使用try
块,而不必担心性能影响。