c exception handling tutorial with code examples
İstisna işleme, bir Programın Yürütülmesi Sırasında Oluşabilecek Hataları İşleme Yöntemi'dir. Bu Öğretici, Kod Örnekleriyle C # 'da İstisna İşlemeyi Açıklar:
örneklerle birlikte unix'te komut bulun
Özel durum işleme, çalışma zamanı hatası olsa bile program akışının devam etmesini sağlamak için kullanılır. İstisnalar, herhangi bir çalışma zamanı hatasıyla karşılaşıldığında fırlatılan nesnelerdir.
İstisnalar ele alınmazsa, C # bir istisna mesajı üretir ve programı sonlandırır, istisna işleme burada devreye girer.
=> Yeni Başlayanlar İçin C # Kılavuzunu Buradan Okuyun
Ne öğreneceksin:
- İstisnalar Nelerdir?
- Özel Durum İşleme İçin Anahtar Sözcükler
- C # 'da Mevcut İstisna Sınıfları
- C # 'da Özel Durum İşleme
- Sonuç
- Önerilen Kaynaklar
İstisnalar Nelerdir?
İstisnalar, çalışma süresi boyunca programınızda meydana gelebilecek benzeri görülmemiş hatalardır. Çoğu zaman programcılar, doğrulama veya boş kontrol gibi bazı hataları veya bazı değerleri doğrularken kolayca tespit edebilir.
Ancak, bir hatanın ne zaman veya ne zaman ortaya çıkacağını tahmin edemediğimiz belirli zamanlar vardır. Örneğin, diyelim ki bir konumda bir dosya arıyorum. Programım dosya mevcut olana kadar mükemmel bir şekilde çalışacak ve eğer dosya bir şekilde silinmişse programım bir hata verecektir.
İstisnalar düzenli olarak ortaya çıkmaz, ancak yine de olabilir ve bunları her zaman dikkatli bir şekilde ele almak isteyeceksiniz. Bunlarla başa çıkmak için istisna işlemeyi kullanıyoruz.
Ne zaman bir hata oluşsa, onun fırlatıldığını söyleriz, 'fırlatılır', System.Exception C # sınıf. System.Exception sınıfı, programınızın az önce karşılaştığı hatayla ilgili ayrıntıları veren farklı yöntemler ve özellikler sunar.
Sorunun oluştuğu yığını sağlayan yığın izleme özelliği veya istisnanın açıklamasını sağlayan Message özelliği gibi.
Özel Durum İşleme İçin Anahtar Sözcükler
İstisnalar, programın belirli bir bölümünü kontrol etmek için bir süreç sunar, böylece o kısımda bir istisna olsa bile, program kontrolü programın başka bir kısmına aktarılır. C # 'da istisna işleme temelde dört anahtar sözcük etrafında inşa edilmiştir: at, dene, yakala ve sonunda .
atmak
Daha önce tartıştığımız gibi, fırlatmanın bir nesnesi System.Exception C # sınıf. Programın biriyle karşılaştığında bir hata atmasına izin verir.
Deneyin
Try bloğu, programın bir özel durum oluşturmasına neden olabilecek kod bloğunu kapsar. Bunu bir veya daha fazla yakalama bloğu izler.
iş analistleri hangi araçları kullanıyor
yakalamak
Try bloğu bir istisna ile karşılaştığında, catch bloğunun istisnayı yakalamasını sağlar. Catch bloğu ayrıca programın bir istisna durumunda yürütmesi gereken bir dizi kod içerebilir veya istisnayı yakalayabilir ve senaryo ve gereksinime bağlı olarak hiçbir şey yapmayabilir.
en sonunda
Son blok, bir istisnanın oluşumuna bakılmaksızın belirli bir kod parçacığını veya talimatı yürütmek için kullanılır. Son olarak blok her zaman çalıştırılır ve program herhangi bir istisna bulamazsa, deneme bloğundan hemen sonra çalıştırılabilir veya program bir istisna yakaladığında catch bloğundan sonra çalıştırılabilir.
C # 'da Mevcut İstisna Sınıfları
C # içindeki tüm istisnalar, doğrudan veya dolaylı olarak System.Exception sınıf.
En yaygın istisnalardan bazılarına kısaca bir göz atalım:
- System.IO.IOException: Girdi ve çıktıyla ilgili tüm hataları idare eder.
- System.DividedByZeroException: Bir sayı sıfıra bölündüğünde atılan hatayı işler.
- System.NullReferenceException : Boş bir nesneye başvurulduğunda ortaya çıkabilecek herhangi bir hatayı işler.
- System.IndexOutOfRangeException: Bir program dizi için aralık dışında olan bir dizine erişmeye çalıştığında atılan hatayı işler.
- System.OutOfMemoryException: Yetersiz bellek varlığı nedeniyle atılan hatayı işler.
C # 'da Özel Durum İşleme
C #, dene ve yakala bloğunu kullanarak oluşabilecek her tür istisnayı ele almak için çok iyi tanımlanmış bir çözüme sahiptir. Bu bloğu kullanarak, programın temel ifadesi diğer ifadelerden ayrılabilir.
Misal:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); } } }
Yukarıdaki örnekte, try bloğunun altına bir dosya açmak için kodumuzu ekledik. Herhangi bir geçerli dosya yolu sağlamadığımız için, kodun bir hata vermesi gerekir. Şimdi, catch bloğumuzdaki hatayı yakaladık. Dosya verilen dosya yolunda yoksa, kod bir FileNotFoundException oluşturur.
Bu istisna, beklenen istisnayı zaten tanımladığımız catch bloğu tarafından yakalanacaktır. Şimdi, kodumuzun daha önce tanımladığımız dışında başka bir istisna attığını düşünelim, o zaman bloğumuz onu yakalayamayacaktır. Herhangi bir genel istisnayı yakalamak için başka bir catch bloğu ekleyeceğiz.
Güncellenen kodumuza bir göz atalım:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.ReadLine(); } } }
Bu genel yakalama bloğu, try bloğunun içine atılabilecek tüm istisnaları yakalayabilecektir. Şimdi, bunu tamamlamak için bir de nihayet bloğu ekleyelim. Basitleştirmek için, nihayet bloğunu kullanarak bir mesaj yazdıralım.
çevrimiçi fırsatlar için veri sağlayıcı web sitesi
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
Burada, basit bir mesajla son bloğu ekledik. Ayrıca bloğa bazı özel ifadeler de ekleyebilirsiniz. Ancak programın genel yapısı burada gösterilene benzer kalacaktır.
Nihayet bloğu, bir istisna olup olmadığına bakılmaksızın her zaman yürütülür. Program, deneme bloğundan başlayacak ve daha sonra herhangi bir hata / istisna yoksa, doğrudan en son bloğa geçecektir. Bir istisna ile karşılaşırsa, önce yakalamak için hareket edecek ve sonra son bloğu çalıştıracaktır.
Nihai bloğun çalıştırılmayacağı bir koşul var mı?
Adından da anlaşılacağı gibi, son blok en sonunda yürütülür ve yürütülecek kodun son bloğudur. Son olarak, uygulama çalışırken blok her zaman yürütülecektir. Nihayet bloğunun yürütülmeyeceği tek zaman, uygulamanın çöktüğü veya işlem komutu kullanılarak kasıtlı olarak öldürüldüğü zamandır.
Sonuç
İstisnalar düzgün bir şekilde ele alınmazsa, programınızda hataya neden olurlar. Try / catch bloklarını kodunuzun herhangi bir yerinde kullanmadıysanız, programınız istisnayı gösteren bir mesajla iptal edilecektir. Genel bir kullanıcı için bu, hatayı kaynak koduna kadar takip etmek ve çözmek çok zor olacaktır.
Bu nedenle, programınızda istisnaların ele alınmasını sağlamak her zaman iyi bir uygulamadır.
Basit kod
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
=> Komple C # Eğitim Serimizi Buradan Görün
Önerilen Kaynaklar
- Kod Örnekleriyle C # İşlevleri / Yöntemleri Öğreticisi
- Örneklerle Python DateTime Eğitimi
- SVN Eğitimi: Subversion Kullanarak Kaynak Kodu Yönetimi
- C # Dize Eğitimi - Kod Örnekleriyle Dize Yöntemleri
- C ++ 'da Özel Durum İşleme
- Tortoise SVN Eğitimi: Kod Deposundaki Revizyonlar
- AWS CodeBuild Eğitimi: Maven Build'tan Kod Çıkarma
- SoapUI Harika Komut Dosyalarında İstisna Nasıl Başa Çıkılır - SoapUI Eğitimi # 11