Finally bloklarını kullanma
Bir özel durum oluştuğunda, yürütme durdurulur ve denetim uygun özel durum işleyicisine verilir. Bu genellikle yürütülmesini beklediğiniz kod satırlarının atlandığı anlamına gelir. Bir özel durum oluşturulsa bile bir dosyayı kapatma gibi bazı kaynak temizleme işlemleri yapılmalıdır. Bunu yapmak için bir finally
blok kullanabilirsiniz. Bir finally
özel durumun oluşup oluşturmadığına bakılmaksızın bir blok her zaman yürütülür.
Aşağıdaki kod örneği, bir yakalamak için bir try
/catch
ArgumentOutOfRangeExceptionblok kullanır. Main
yöntemi iki dizi oluşturur ve birini diğerine kopyalamaya çalışır. Eylem, -1 olarak belirtildiğinden length
bir ArgumentOutOfRangeException oluşturur ve hata konsola yazılır. Blok, finally
kopyalama eyleminin sonucundan bağımsız olarak yürütülür.
using namespace System;
ref class ArgumentOutOfRangeExample
{
public:
static void Main()
{
array<int>^ array1 = {0, 0};
array<int>^ array2 = {0, 0};
try
{
Array::Copy(array1, array2, -1);
}
catch (ArgumentOutOfRangeException^ e)
{
Console::WriteLine("Error: {0}", e);
throw;
}
finally
{
Console::WriteLine("This statement is always executed.");
}
}
};
int main()
{
ArgumentOutOfRangeExample::Main();
}
class ArgumentOutOfRangeExample
{
public static void Main()
{
int[] array1 = {0, 0};
int[] array2 = {0, 0};
try
{
Array.Copy(array1, array2, -1);
}
catch (ArgumentOutOfRangeException e)
{
Console.WriteLine("Error: {0}", e);
throw;
}
finally
{
Console.WriteLine("This statement is always executed.");
}
}
}
Class ArgumentOutOfRangeExample
Public Shared Sub Main()
Dim array1() As Integer = {0, 0}
Dim array2() As Integer = {0, 0}
Try
Array.Copy(array1, array2, -1)
Catch e As ArgumentOutOfRangeException
Console.WriteLine("Error: {0}", e)
Throw
Finally
Console.WriteLine("This statement is always executed.")
End Try
End Sub
End Class
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin