-4
我想将一些c#代码移植到没有finally构造的语言中。 我可以用什么替代方法来模仿它? 如果你知道它是如何实现的,也许我可以创建...'最后'是如何在C#或Java中实现的?
我想将一些c#代码移植到没有finally构造的语言中。 我可以用什么替代方法来模仿它? 如果你知道它是如何实现的,也许我可以创建...'最后'是如何在C#或Java中实现的?
我想没有人会告诉你finally
是如何实现的,因为那些想告诉你的人不知道它和那些少数谁知道它不会告诉你。因此,让我们减少问题“我怎么能编程类似于终于东西?”
要回答这个问题,让我们来看看finally
是如何工作的:
的finally块总是执行try块退出时。即使发生意外的 异常,此 可确保执行finally块。但最后对于处理不仅仅是例外 有用 - 它允许程序员避免意外地被返回,继续或中断绕过清理代码 。将finally代码清理 总是一个很好的做法,即使在没有预期的情况下也是如此。
Source。由于finally
应该执行而不管结果如何,您需要将它放在try
-catch
之后。然而,仍然存在一个问题:当有一个不应该被捕获的异常时会发生什么?该解决方案如下:
try
声明一个Exception
变量 - catch
并将其初始化null
try
例外 - catch
catch (Exception ex)
为好,以确保每个异常都抓住了(不用担心,我们会throw
需要抛出什么)null
,在“最后”代码
1.运行最终代码之前,任何后扔返回。 2.如果发生异常,将其吞下,最后运行代码,然后重新抛出并运行带有该异常的catch-chain。 – kobi7
我可以通过在try-finally子句中运行dispose来实现使用语句。 – kobi7
更好地将代码放在每个catch块之后,但在返回之前。 – kobi7