Finally Bloğu
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 27 / 66.
finally bloğu, bir istisna oluşup oluşmadığına bakılmaksızın, hatta try veya catch bloklarında bir return ifadesi olsa bile her zaman yürütülen kodu içerir.
Temel bir try-catch-finally yapısı oluşturun:
try
{
// İstisna fırlatabilecek kod
int result = 10 / 2;
Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
// İstisnayı işleyen kod
Console.WriteLine("Cannot divide by zero: " + ex.Message);
}
finally
{
// Her zaman çalışan kod
Console.WriteLine("This always executes");
}
finally bloğu, dosyaları veya veritabanı bağlantılarını kapatmak gibi temizlik görevleri için kullanışlıdır:
System.IO.StreamReader file = null;
try
{
file = new System.IO.StreamReader("data.txt");
string content = file.ReadToEnd();
Console.WriteLine(content);
}
catch (System.IO.FileNotFoundException)
{
Console.WriteLine("File not found.");
}
finally
{
// Her zaman dosyayı kapat, bir istisna oluşsa bile
if (file != null)
{
file.Close();
}
}
Görev
KolayProcessData adlı bir metot oluşturun:
- Bir dosya adını temsil eden dize parametresi alır
- Dosyayı açmayı ve içeriğini okumayı dener
- İçeriği konsola yazar
- Bir finally bloğu kullanarak kaynakları düzgün şekilde temizler
- FileNotFoundException ve IOException hatalarını işler
Dosya bulunamazsa şunu yazdırın: "ERROR: File not found: [filename]"
Başka bir G/Ç hatası oluşursa şunu yazdırın: "ERROR: Could not read the file: [error message]"
Bir istisna oluşmuş olsun ya da olmasın, finally bloğunda her zaman "File operation completed." yazdırın.
Kendin dene
using System;
using System.IO;
class Program
{
public static void ProcessData(string filename)
{
// Buraya kodunuzu yazın
}
static void Main(string[] args)
{
string filename = Console.ReadLine();
ProcessData(filename);
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1Çok Boyutlu Diziler
2B Dizilere Giriş2B Tanımlama ve Başlatma2B Dizi Öğelerine Erişim2B Dizilerle İç İçe DöngülerDüzensiz DizilerYaygın Matris İşlemleriTekrar - Çok Boyutlu4Akış Denetimi Teknikleri
Erken DönüşlerKoruma KoşullarıAtlama İfadeleri (goto)Break ve Continueİç İçe Koşulları Düzleştirme7İleri Düzey Mantıksal Operatörler
Kısa Devre DeğerlendirmesiKoşullu Mantıksal OperatörlerOperatör ÖnceliğiÖzet - İleri Düzey Operatörler2İleri Düzey Karar Verme
Birden Çok KoşulKarmaşık Boolean MantığıIf ve Switch Karşılaştırmasıİç İçe Switch İfadeleriÖzet - İleri Düzey Kararlar5İstisna Yönetimi
Try-Catch Temelleriİstisna TürleriBirden Çok Catch BloğuDosyalarla ÇalışmaFinally BloğuUsing ve Try-Finally KarşılaştırmasıÖzel İstisnalarTekrar - Hata Yönetimi3Döngü İyileştirmeleri
Döngü PerformansıKarmaşık Yapılar Üzerinde İterasyonHer Döngü TürüDöngüleri Yeniden DüzenlemeÖzet - Optimize Edilmiş Döngüler6Null Yönetimi
Null Referanslarının TemelleriNullable Değer TürleriNull Kontrolü DesenleriSavunmacı ProgramlamaTekrar - Null GüvenliğiKendi başına pratik yap: Online C# derleyicisi