'on' ile İstisnaları Yakalamak
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 40 / 65.
Temel try-catch bloğu meydana gelen her türlü istisnayı yakalarken, bazen farklı istisna türlerini farklı şekillerde ele almanız gerekir. on anahtar kelimesi, belirli istisna türlerini yakalamanıza ve her biri için özel yanıtlar sunmanıza olanak tanır.
Tüm istisnaları genel bir catch ile yakalamak yerine, istisna türünden sonra gelen on anahtar kelimesini kullanarak belirli istisnaları hedefleyebilirsiniz. Bu, programınızın farklı hata durumlarına nasıl yanıt vereceği konusunda size daha fazla kontrol sağlar.
try {
int number = int.parse("abc");
} on FormatException {
print("Please enter a valid number");
}Bu örnekte, kod özellikle geçersiz bir metni sayı olarak ayrıştırmaya çalışırken oluşan bir FormatException yakalar. Bu, kullanıcıların kafasını karıştırabilecek genel bir hata mesajı göstermek yerine, sorunu doğrudan ele alan net ve kullanıcı dostu bir mesaj sunmanıza olanak tanır.
Farklı istisna türlerini uygun yanıtlarla ele almak için birden fazla on bloğunu birleştirebilir, böylece hata yönetiminizi hem kesin hem de kullanıcı dostu hale getirebilirsiniz.
Görev
Kolayon anahtar kelimesini kullanarak belirli istisnaları yakalamayı gösteren bir program oluşturun. Programınız farklı türdeki kullanıcı girdilerini işleyecek ve belirli istisna türlerini özelleştirilmiş hata mesajlarıyla ele alacaktır.
- Bir matematiksel ifade türünü temsil eden bir dize girdisi okuyun (
"parse","divide"veya"access") - Birinci değeri temsil eden bir dize girdisi okuyun
- İkinci değeri temsil eden bir dize girdisi okuyun (uygun olduğunda)
- İfade türüne bağlı olarak, belirli istisna yönetimi kullanarak ilgili işlemi gerçekleştirin:
"parse"için:int.parse()kullanarak birinci değeri bir tam sayıya dönüştürün ve özellikleFormatExceptionistisnasını yakalayın"divide"için: Her iki değeri de tam sayı olarak ayrıştırın ve bölme işlemini gerçekleştirin, ayrıştırma hataları içinFormatExceptionistisnasını yakalayın"access"için: Birinci değerle bir liste oluşturun ve ikinci değerle belirtilen indekse erişin, geçersiz indeksler içinRangeErroristisnasını yakalayın- Sonuçları veya belirli hata mesajlarını aşağıda gösterilen tam formatta görüntüleyin
Örneğin, girdiler "parse", "42", "unused" ise programınızın çıktısı şöyle olmalıdır:
Operation: parse
Input: 42
Parsing successful!
Result: 42Girdiler "parse", "xyz", "unused" ise programınızın çıktısı şöyle olmalıdır:
Operation: parse
Input: xyz
FormatException caught: Invalid number format
Please provide a valid integerGirdiler "divide", "10", "2" ise programınızın çıktısı şöyle olmalıdır:
Operation: divide
Values: 10, 2
Division successful!
Result: 5Girdiler "divide", "10", "abc" ise programınızın çıktısı şöyle olmalıdır:
Operation: divide
Values: 10, abc
FormatException caught: Invalid number format
Cannot perform division with invalid numbersGirdiler "access", "hello", "1" ise programınızın çıktısı şöyle olmalıdır:
Operation: access
List: [hello]
Index: 1
RangeError caught: Index out of range
Valid indices are 0 to 0Programınız, özellikle FormatException ve RangeError istisnalarını yakalamak için on anahtar kelimesiyle ayrı try-catch blokları kullanmalıdır. Her istisna türünün, neyin yanlış gittiğini açıkça açıklayan kendine özgü bir hata mesajı olmalıdır. "access" işlemi için, yalnızca ilk girdi değerini içeren bir liste oluşturun ve ikinci girdi değeriyle belirtilen indekse erişmeye çalışın.
Kopya kağıdı
Genel bir catch bloğu kullanmak yerine belirli hata türlerini yakalamak için on anahtar kelimesini kullanın:
try {
int number = int.parse("abc");
} on FormatException {
print("Please enter a valid number");
}Farklı hata türlerini uygun yanıtlarla ele almak için birden fazla on bloğunu birleştirebilirsiniz:
try {
// farklı hatalar fırlatabilecek bazı kodlar
} on FormatException {
print("Invalid format error");
} on RangeError {
print("Index out of range error");
}Bu yaklaşım, her bir özel hata türü için özelleştirilmiş yanıtlar verilmesine olanak tanıyarak hata yönetimi üzerinde daha fazla kontrol sağlar.
Kendin dene
import 'dart:io';
void main() {
// Girdiyi oku
String? operation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// İşlem bilgisini görüntüle
print('Operation: $operation');
// TODO: Kodunuzu aşağıya yazın
// Belirli istisnaları işlemek için 'on' anahtar kelimesiyle try-catch bloklarını kullanın
// Ayrıştırma (parse) ve bölme işlemleri için FormatException'ı ele alın
// Erişim işlemi için RangeError'ı ele alın
}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