'finally' Bloğu
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 41 / 65.
Bazen try-catch bloğunuzda ne olursa olsun çalışan bir koda ihtiyaç duyarsınız. finally bloğu tam olarak bu amaca hizmet eder; bir istisna oluşsa da oluşmasa da her zaman yürütülen kodları içerir.
finally bloğu, try ve catch bloklarınızdan sonra gelir. try bölümündeki kodunuz başarıyla çalışsa bile veya bir istisna yakalanıp işlense bile, finally bloğu yine de yürütülecektir.
try {
// İstisnaya neden olabilecek kod
int result = 10 ~/ 2;
print("Result: $result");
} catch (e) {
print("An error occurred: $e");
} finally {
print("This always runs!");
}Bu, finally bloğunu dosyaları kapatmak, kaynakları serbest bırakmak veya bir işlemin tamamlandığını günlüğe kaydetmek gibi temizleme işlemleri için mükemmel hale getirir. Hata yönetiminizde ne olursa olsun, belirli kodların her zaman çalışacağını garanti edebilirsiniz.
Görev
Kolayİşleme sırasında bir hata oluşup oluşmadığına bakılmaksızın her zaman temizleme işlemlerini gerçekleştiren bir dosya işleme simülatörü uygulayarak finally bloğunu gösteren bir program oluşturun.
- İşlenecek dosya adını temsil eden bir dize girişi okuyun
- Dosya içeriğini temsil eden bir dize girişi okuyun
- Bir hata simülasyonu yapılıp yapılmayacağını temsil eden bir dize girişi okuyun (
"error"veya"success") - Dosya işlemeyi simüle etmek için bir
try-catch-finallyyapısı kullanın: trybloğunda: Hata simülasyonunun"error"olup olmadığını kontrol edin ve doğruysa"File processing failed"mesajıyla bir istisna fırlatın, aksi takdirde dosyayı başarıyla işleyincatchbloğunda: İşleme sırasında oluşan tüm istisnaları ele alınfinallybloğunda: Başarı veya başarısızlıktan bağımsız olarak her zaman temizleme işlemlerini gerçekleştirin- İşleme sonuçlarını aşağıda gösterilen tam formatta görüntüleyin
Örneğin, girişler "document.txt", "Hello World", "success" ise programınızın çıktısı şöyle olmalıdır:
File Processing System
======================
Opening file: document.txt
File content: Hello World
Processing file successfully...
File processed: 11 characters found
Cleanup: Closing file handles
Cleanup: Releasing memory resources
Cleanup: Logging operation completion
Processing completed successfullyGirişler "report.pdf", "Annual Report Data", "error" ise programınızın çıktısı şöyle olmalıdır:
File Processing System
======================
Opening file: report.pdf
File content: Annual Report Data
Error occurred: File processing failed
Unable to complete file processing
Cleanup: Closing file handles
Cleanup: Releasing memory resources
Cleanup: Logging operation completion
Processing completed with errorsGirişler "config.json", "{\"setting\": \"value\"}", "success" ise programınızın çıktısı şöyle olmalıdır:
File Processing System
======================
Opening file: config.json
File content: {"setting": "value"}
Processing file successfully...
File processed: 19 characters found
Cleanup: Closing file handles
Cleanup: Releasing memory resources
Cleanup: Logging operation completion
Processing completed successfullyProgramınız, finally bloğunun her zaman üç temizleme işlemini gösterilen tam sırayla yürüttüğü bir try-catch-finally yapısı kullanmalıdır. try bloğunda, hata simülasyonu girişinin "error" değerine eşit olup olmadığını kontrol edin ve doğruysa bir istisna fırlatın. Herhangi bir hata simüle edilmezse, length özelliğini kullanarak dosya içeriğindeki karakterleri sayın. finally bloğu her zaman temizleme mesajlarını yazdırmalı ve bir hata oluşup oluşmadığına bağlı olarak nihai tamamlanma durumunu belirlemelidir.
Kopya kağıdı
finally bloğu, bir istisna oluşup oluşmadığına bakılmaksızın, try-catch yapısından sonra her zaman çalışan kodları içerir.
try {
// Code that might cause an exception
int result = 10 ~/ 2;
print("Result: $result");
} catch (e) {
print("An error occurred: $e");
} finally {
print("This always runs!");
}finally bloğu; dosyaları kapatmak, kaynakları serbest bırakmak veya tamamlanma durumunu günlüğe kaydetmek gibi temizleme işlemleri için mükemmeldir.
Kendin dene
import 'dart:io';
void main() {
// Girişi oku
String? filename = stdin.readLineSync();
String? content = stdin.readLineSync();
String? errorSimulation = stdin.readLineSync();
// Sistem başlığını görüntüle
print("File Processing System");
print("======================");
print("Opening file: $filename");
print("File content: $content");
// TODO: Kodunuzu aşağıya yazın
// Dosya işlemeyi simüle etmek için try-catch-finally yapısını kullanın
// - try bloğunda: errorSimulation "error" değerine eşitse kontrol edin ve doğruysa istisna fırlatın
// - catch bloğunda: herhangi bir istisnayı ele alın
// - finally bloğunda: her zaman temizleme işlemlerini gerçekleştirin
}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İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi6Temel Hata Yönetimi
İstisnalar Nedir?'try-catch' Bloğu'on' ile İstisnaları Yakalamak'finally' Bloğuİstisna FırlatmakÖzet - Güvenli Bölme