假设您有一段代码,例如:
resource = allocateResource();
try { /* dangerous code here */ }
finally { free(resource); }
我在这里不是指任何特定的语言,但我想 Java、C# 和 C++ 将是很好的例子(假设你在 MSVC++ 中使用__try
/ )。__finally
这是异常安全的吗?
就个人而言,我不认为这是异常安全的,因为如果在进入块之前出现异常怎么办?try
然后你的资源就会泄露。
不过,我已经看过足够多的时间了,我认为我错过了一些东西……是吗?或者这真的不安全吗?
编辑:
我不是在询问是否allocateResource
抛出异常,而是在该函数返回之后但在分配之前 resource
得到异常的情况。