
空值和异常
你现在的位置 4
241
使用
finally
去做无论如何你都想
做的事情
无论发生任何异常,如果你都想要做一些重要的清理,你可
以将这部分代码放在finally块中。
finally
块是可选的,
但是它可以保证无论如何你的代码能够执行。
为了了解这是如何工作的,假设你想要做些烘焙试验,但
是它们可能会出错。
首先从打开烤箱开始。
如果你尝试烹饪的东西成功了,你必须关掉烤箱。
如果你尝试烹饪的东西彻底失败,你必须关掉烤箱。
无论如何你必须关掉烤箱,所以关掉烤箱的代码应该属于
finally
块:
try {
turnOvenOn()
x.bake()
} catch (e: BakingException) {
println("Baking experiment failed")
} finally {
turnOvenOff()
}
如果没有
fi na lly
,你
不 得 不 在
try
和
catch
中同时放
入
t
urnOvenOff
的代码,因为无论如何你必须关掉烤
箱。
f
inally
块让你只需要在一个地方放入重要的清理代码,
而不是像这样做重复的事:
try {
turnOvenOn()
x.bake()
turnOvenOff()
} catch (e: BakingException) {
println("Baking experiment failed")
turnOvenOff()
}
¥ 如果
try
块运行失败
(
有异
常
):
流程控制立即转移到
catch
块
。
catch
块完成后
,
fi nally
块开始
运行
。
当
fi