Jak: spustit vyčištění kódu pomocí nakonec (C# program televize)
Účel finally prohlášení je zajistit nezbytné vyčištění objektů obvykle objekty, které jsou externí prostředky podniku dojde okamžitě, i když je výjimka.Příkladem takové vyčištění je volání Close na FileStream ihned po použití čekání na objekt do odpadků takto shromážděné společného jazykového modulu runtime,:
static void CodeWithoutCleanup()
{
System.IO.FileStream file = null;
System.IO.FileInfo fileInfo = new System.IO.FileInfo("C:\\file.txt");
file = fileInfo.OpenWrite();
file.WriteByte(0xF);
file.Close();
}
Příklad
Zapnout předchozí kód do try-catch-finally příkaz Vyčištění kódu je oddělen od kódu pracovní takto.
static void CodeWithCleanup()
{
System.IO.FileStream file = null;
System.IO.FileInfo fileInfo = null;
try
{
fileInfo = new System.IO.FileInfo("C:\\file.txt");
file = fileInfo.OpenWrite();
file.WriteByte(0xF);
}
catch(System.UnauthorizedAccessException e)
{
System.Console.WriteLine(e.Message);
}
finally
{
if (file != null)
{
file.Close();
}
}
}
Protože výjimku může nastat kdykoli v průběhu try blokovat před OpenWrite() volání, nebo OpenWrite() samotné volání může selhat, jsme nemusí soubor je otevřený, když se pokusíme jej zavřít.finally Bloku přidá zkontrolujte, zda FileStream objekt není null než zavoláte Close metoda.Bez null kontrola, finally bloku nelze vyvolat vlastní NullReferenceException, ale vyvolání výjimky finally bloky je nutno, pokud je to možné.
Připojení k databázi je jiná vhodná pro zavřený finally bloku.Počet připojení k databázovému serveru je někdy omezené, a proto je co nejrychleji zavřít připojení databáze.Pokud před uzavřením připojení je vyvolána výjimka, je jiný případ v případě použití finally bloku je lepší než čekání na uvolnění paměti.
Viz také
Referenční dokumentace
Výjimky a zpracování výjimek (Příručka programování C#)
(C# Příručka programování) zpracování výjimek
try-catch-finally (C#-Reference)