'try-catch' Bloğu
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 39 / 65.
İstisnaların ne olduğunu anladığınıza göre, try-catch bloğunu kullanarak bunları nasıl zarif bir şekilde ele alacağımızı öğrenelim. Bu, bir şeyler ters gittiğinde programınızın çökmesini engelleyen temel araçtır.
try-catch bloğu, potansiyel olarak sorunlu kodları bir try bölümüne sararak çalışır. Bir istisna (exception) oluşursa, programınızı çökertmek yerine Dart, hatayı uygun şekilde ele alabileceğiniz catch bölümüne anında atlar.
try {
// İstisnaya neden olabilecek kod
int number = int.parse("abc");
} catch (e) {
// Bir istisna oluşursa çalışan kod
print("Something went wrong: $e");
}Bu örnekte, "abc" dizesini bir tam sayıya dönüştürmeye çalışmak normalde programınızı çökertecektir. Ancak, bir try bloğu içine alındığı için, istisna yakalanır ve bunun yerine catch bloğunda işlenir. e değişkeni, neyin yanlış gittiğine dair bilgiler içerir.
Bu yaklaşım, beklenmedik durumlar meydana gelse bile programınızın çalışmaya devam etmesini sağlayarak kodunuzu çok daha sağlam ve kullanıcı dostu hale getirir.
Görev
KolayBir try-catch bloğu kullanarak kullanıcıdan alınan girdi dizelerini güvenli bir şekilde sayılara dönüştüren bir program oluşturun. Programınız, girdinin geçerli bir sayı olmayabileceği durumları ele almalı ve programın çökmesini engellemelidir.
- Tam sayıya dönüştürülmesi gereken bir sayıyı temsil eden bir dize girdisi okuyun
int.parse()kullanarak dönüşümü güvenli bir şekilde denemek için birtry-catchbloğu kullanın- Dönüşüm başarılı olursa, sayının karesini hesaplayın (kendisiyle çarpın)
- Dönüşüm başarısız olursa ve bir istisna (exception) oluşursa, hatayı düzgün bir şekilde ele alın
- Uygun sonucu veya hata mesajını tam olarak aşağıda gösterilen formatta görüntüleyin
Örneğin, girdi "5" ise programınız şu çıktıyı vermelidir:
Processing input: 5
Conversion successful!
The square of 5 is: 25Eğer girdi "abc" ise programınız şu çıktıyı vermelidir:
Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integerEğer girdi "12" ise programınız şu çıktıyı vermelidir:
Processing input: 12
Conversion successful!
The square of 12 is: 144Programınız, int.parse() işlemini sarmalamak için bir try-catch bloğu kullanmalıdır. try bölümünde, girdi dizesini bir tam sayıya dönüştürmeye çalışın ve karesini hesaplayın. catch bölümünde, dönüşüm sırasında oluşan her türlü istisnayı ele alın ve uygun bir hata mesajı görüntüleyin. Program, dönüşümün başarılı olup olmamasına bakılmaksızın normal şekilde çalışmaya devam etmelidir.
Kopya kağıdı
İstisnaları düzgün bir şekilde yönetmek ve programın çökmesini önlemek için try-catch bloklarını kullanın:
try {
// İstisnaya neden olabilecek kod
int number = int.parse("abc");
} catch (e) {
// Bir istisna oluşursa çalışan kod
print("Something went wrong: $e");
}try bloğu potansiyel olarak sorunlu kodları içerirken, catch bloğu meydana gelen tüm istisnaları yönetir. e değişkeni istisna hakkında bilgi içerir.
Kendin dene
import 'dart:io';
void main() {
// Giriş dizesini oku
String? input = stdin.readLineSync();
// İşleme mesajını görüntüle
print('Processing input: $input');
// TODO: Kodunuzu aşağıya yazın
// Girişi tam sayıya güvenli bir şekilde dönüştürmek için try-catch bloğu kullanın
// Dönüştürme başarılı olursa kareyi hesaplayın
// Dönüştürme sırasında oluşan istisnaları 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