İstisna Türleri
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 24 / 66.
C#'ta istisnalar, temsil ettikleri hataya göre farklı türlere ayrılır. Bu türleri anlamak, hataları daha etkili bir şekilde ele almanıza yardımcı olur.
Yaygın istisna türlerine bakalım:
Tüm istisnaların temel sınıfı System.Exception.
try
{
// İstisna fırlatabilecek kod
}
catch (Exception ex)
{
// Herhangi bir istisna'yı işle
Console.WriteLine(ex.Message);
}Bazı yaygın istisna türleri:
ArgumentException: Bir yöntem geçersiz bir argümanla çağrıldığında fırlatılır.
string name = null;
if (name == null)
{
throw new ArgumentException("Name cannot be null");
}NullReferenceException: Null bir referans üzerinde bir üyeye erişmeye çalışıldığında atılır.
string text = null;
// This will throw NullReferenceException
int length = text.Length;IndexOutOfRangeException: Bir dizi indeksi dizi sınırlarının dışındaysa atılır.
int[] numbers = { 1, 2, 3 };
// This will throw IndexOutOfRangeException
int value = numbers[5];DivideByZeroException: Bir tamsayıyı sıfıra böldüğünüzde atılır.
int result = 10 / 0; // This will throw DivideByZeroExceptionBelirli istisnaları yakalayabilirsiniz:
try
{
int[] numbers = { 1, 2, 3 };
int value = numbers[5];
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Array index error: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("General error: " + ex.Message);
}Görev
KolayProcessArray adında bir yöntem oluşturun ki:
- Tamsayı dizisi ve bir indeks parametrelerini alsın
- Belirtilen indeksteki elemana erişmeye çalışsın
- Başarılı olursa eleman değerini döndürsün
- Bir
IndexOutOfRangeExceptionoluşursa yakalasın ve -1 döndürsün
Yönteminizin imzası şu şekilde olmalıdır:
public static int ProcessArray(int[] array, int index)Kendin dene
using System;
class Program
{
public static int ProcessArray(int[] array, int index)
{
// Kodunuzu buraya yazın
return 0;
}
static void Main(string[] args)
{
// Dizi girdisini oku
string input = Console.ReadLine();
// Varsa köşeli parantezleri kaldır
if (input.StartsWith("[") && input.EndsWith("]"))
{
input = input.Substring(1, input.Length - 2);
}
string[] parts = input.Split(',');
int[] array = new int[parts.Length];
for (int i = 0; i < parts.Length; i++)
{
array[i] = int.Parse(parts[i].Trim());
}
// İndeks girdisini oku
int index = int.Parse(Console.ReadLine());
int result = ProcessArray(array, index);
Console.WriteLine(result);
}
}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