Wie kann ich im folgenden Codeschnipsel sicherstellen, dass IDataReader
entsorgt wird, wenn ExecuteReader
eine Ausnahme auslöst?Wie kann ich ein IDisposable-Objekt bereitstellen, wenn die using-Anweisung eine Ausnahme auslöst?
using (IDataReader rdr = cmd.ExecuteReader())
{
// use it
}
Es macht Sinn für mich, dass die using
syntaktischen Zucker nicht Entsorgen nicht nennen (da es keinen Fall ist es zu fordern). Wie kann ich jedoch sicher sein, dass die knappen Ressourcen, die normalerweise von Klassen zugewiesen werden, die IDisposable implementieren, Freigaben sind?
Wenn ExecuteReader eine Ausnahme auslöst, ist IDataReader null und muss nicht beseitigt werden. Die nicht verwalteten Ressourcen in ExecuteReader müssen bereinigt werden und sollten in einem eigenen finally-Block behandelt werden. – cjk