Если вы можете, вы должны проверить, чтобы избежать условия ошибки для начала.
try{...}
catch(NullArgumentException nae){...}
finally
{
//or if resource had some useful function that tells you its open use that
if (resource != null)
{
resource.Close();
resource = null;//just to be explicit about it was closed
}
}
Кроме того, вам, вероятно, следует отлавливать только те исключения, из которых вы можете восстановить, если вы не можете восстановить, тогда пусть это распространяется на верхний уровень вашей программы. Если вы не можете проверить наличие ошибки, вам придется окружить свой код блоком try catch, как вы уже сделали (хотя я бы по-прежнему рекомендовал перехватывать определенные, ожидаемые ошибки).