Widziałem, jak ludzie mówią, że złym sposobem jest użycie catch bez argumentów, szczególnie jeśli ten catch nic nie robi:
StreamReader reader=new StreamReader("myfile.txt");
try
{
int i = 5 / 0;
}
catch // No args, so it will catch any exception
{}
reader.Close();
Jest to jednak uważane za dobrą formę:
StreamReader reader=new StreamReader("myfile.txt");
try
{
int i = 5 / 0;
}
finally // Will execute despite any exception
{
reader.Close();
}
O ile mogę stwierdzić, jedyną różnicą między umieszczeniem kodu czyszczącego w bloku na końcu a umieszczeniem kodu czyszczącego po blokach try..catch jest to, że w bloku try masz instrukcje return (w takim przypadku kod czyszczenia w końcu będzie uruchom, ale kod po try..catch nie będzie).
W przeciwnym razie, co jest w końcu takiego specjalnego?