Допустим, у вас есть кусок кода вроде:
resource = allocateResource();
try { /* dangerous code here */ }
finally { free(resource); }
Я не имею в виду какой-либо конкретный язык здесь, но я думаю, что Java, C # и C ++ были бы хорошими примерами (если вы используете __try
/ __finally
в MSVC ++).
Это исключение безопасно?
Лично я не думаю, что это безопасно для исключений, потому что, если есть исключение до , когда вы входите в блок try
? Тогда ваш ресурс утечет.
Я видел это достаточно много раз, хотя, я думаю, что я что-то упускаю ... я? Или это действительно небезопасно?
Edit:
Я не спрашиваю о allocateResource
выдаче исключения, но ситуация, в которой вы получаете исключение после , что функция вернулась, но до resource
назначено.