C#nedir?com
 
YAZAR HAKKINDA
Resul Çavuşoğlu
Resul Çavuşoğlu
http://www.resulcavusoglu.com
İletişme geçmek için tıklayın.
4 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: birlikte exception herhangi ifadesi ilgili istisna istisnalari main(string[] makalemizde mesaji meydana nesnesinden ortaya siniflari static C# / VC#/.NET Resul Çavuşoğlu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 13.10.2004
Okunma Sayısı : 27497
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 12.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 12.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 12.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 12.4.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Exception 2 (İstisnalar)
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Net platformu üzerinde istisna yönetimi ile ilgili daha önce bir makale yayınlamıştık. Şimdi ki makalemizde kendi istisnalarımızı oluşturmayı, Exception nesnesinden yeni istisna sınıfları türetmeyi ve istisnaları fırlatmayı göreceğiz Programcılara çoğunlukla yazılım geliştirme aracının ( Visual Studio.NET) sunmuş olduğu istisna sınıfları yeterli gelmektedir. Bununla birlikte özel bir bileşen geliştirme aşamasında bazen özel istisnalara ihtiyaç duyarız. Bu bileşen içerisinde meydana gelen hataları kendimiz yönetmek isteriz. Öncelikle istisnaları isteğimize bağlı ortaya çıkartmayı göreceğiz.

THROW ifadesini kullanma :

Throw ifadesi istisnaları istediğimiz anda ortaya çıkartmamıza imkan vermektedir. Throw ifadesi Exception sınıf veya bu sınıftan türetilmiş herhangi bir istisna sınıfı için kullanılır. Throw ifadesinin kullanıldığı noktada program durarak; istenilen istisnayı üretir. Bu istisna daha önceki makalemizde anlattığımız gibi yönetilebileceği gibi, hata mesajından da yararlanılabilir. Aşağıda throw kullanımına ait bir kaç örnek bulunmaktadır.

  using System;
namespace Exception2
{
      class Istisnalar
      {
           [STAThread]
           static void Main(string[] args)
           {
                  throw new Exception();
           }
       }
}

Yukarıda ki örnekte istisna temel sınıf olan Excepition nesnesinden oluşturulmuştur. Bu hata try catch, finally blokları ile yakalanabilir. Exception nesnesinin 3 çeşit yapıcısı bulunmaktadır. Farklı yapıcıların kullanıldığı bir örnek aşağıda bulunmaktadır.

using System;
namespace Exception2
{
       class Istisnalar
      {
           [STAThread]
           static void Main(string[] args)
           {
                  try
                  {
                         throw new Exception(); // İstisna oluşur fakat herhangi bir özel mesaj yoktur.

                         throw new Exception("Benim istisna mesajım"); // İstisna oluşur ve özel hata mesajı üretirlir.
                  }
                  catch (Exception e)
                  {
                        Console.WriteLine(e.Message);
                        throw new Exception("Hata Meydana Geldi",e); // Hata mesajı ile birlikte dışardan oluşan hata sınıfa gönderilir.
                  }
                  
           }
       }
}

Yukarıda ki örneğimizde Exception temel istisna sınıfı kullanılarak 3 farklı şekilde istisna ortaya çıkartılmıştır. 1. şekilde ortaya çıkan hata ile ilgili herhangi bir mesaj verilmekmektedir. 2. şekilde ise ortaya çıkan istisna ile birlikte bir hata mesajı da mevcuttur. 3. şekilde ise ortaya çıkan genel bir hatadan isteğimize bağlı bir hata üretilmesi sağlanmış ve dışarıda oluşan genel hata kullanılan hata sınıfına bildirilmiştir. Şu an için son yöntem bir şey ifade etmiyor gibi gözüksede ileriki satırlarımızda kendi istisna nesnemizi oluşturduğumuzda innerexception diye adlandırılan bu istisna referansı tarafımızca kullanılabilecektir.

Throw ifadesi Exception sınıfından türetilmiş istisna sınıfları içinde kullanılabilir.

  using System;
namespace Exception2
{
       class Istisnalar
      {
           [STAThread]
           static void Main(string[] args)
           {
                  try
                  {
                         throw new DivideByZeroException(); // sıfıra bölünme istisnası isteğe bağlı oluştu.
                  }
                  catch (Exception e)
                  {
                        Console.WriteLine(e.Message);
                        
                  }
                  
           }
       }
}

Yukarıdaki örneğimizde DivideByZeroException istisnasının ortaya çıkmıştır. Bu istisna sonucu olarak ekrana Attampted to divide by zero istisna mesajı gözükecektir.

Exception nesnesinden istisna sınıfları türetme :

İstisna sınıflarının tamamı Exception temel sınıfından yaratılmıştır. Her alanda çeşitli istisna sınıfları olduğunu önceki makalemizde söylemiştik. Peki çok özel bir istisna sınıfına ihtiyacımız olursa ne yapmamız gerekir. Başlığımızdan da anlaşılacağı gibi kendi sınıfımızı türetmemiz yeterlidir. Bu sınıf içerisinde istisna meydana geldiğinde istediklerimizi yapacak kodları bulundurabiliriz.

Temel Exception sınıfı üzerinde çeşitli özellikler ve methodlar bulunmaktadır. Bu özellik ve methodlar ezilerek kullanılabilceği gibi isteklerimiz doğrultusunda yeni özellikler ve methodlarda ekleyebiliriz. Oluşturulan bu istisna sınıf throw ifadesi ile ortaya çıkartılabilir.

Şimdi bilinenlerden farklı ihtiyaçlarımıza bağlı bir istisna sınıfı oluşturalım. Bu istisna sınıfı her kullanıldığında ürettiği hata mesajını bir dosyanın içinde barındırabilsin. Tabiki ihtiyaçlarınız doğrultusunda bu bir veritabanı da olabilir.

using System;
namespace Exception2
{
       class Istisnalar
      {
           [STAThread]
           static void Main(string[] argös)
           {
                  try
                  {
                         throw ResulException("Hata Oluşturuyorum");
                  }
                  catch(ResulException e)
                  {
                        e.LogYaz("c:\hatalar.txt");
                        Console.WriteLine(e.Message);
                  }
                  
           }
       }
       class ResulException : Exception
       {
          public ResulException():base()
          {
          }
          public ResulException(string tempmessage):base(tempmessage)
          {

          }
          public void LogYaz(string logfile)
          {
                    ......................................
                    ...............................
                    ...............................
          }
       }
}

Örneğimizde Exception sınıfından ResulExcepiton isminde bir sınıf türettik. Bu sınıf Exception sınıfına ait yapıcı methodlara base göndermese yapıyor. Temel olarak Exception sınıfının özelliklerini kullanabiliyor. Bu özelliklere ek olarak belirtilen dosya içine isteğimize bağlı olarak hata mesajlarını yazıyor. Bu şekilde ki istisna sınıfı kullanarak bir hatalar günlüğü tutmamızda mümkün olabilir.

İstisnalar ile ilgili kuralımızı yeniliyoruz. Gerekmedikçe istisna kullanmak program performansını düşürür. Fakat kritik noktalarda istisna kullanmak ve bu istisnaları yakalamak büyük kayıpları engeller. Bir sonraki makalemizde görüşmek üzere

Resul ÇAVUŞOĞLU
c.resul@concort.com

Makale:
Exception 2 (İstisnalar) C#, Visual C# ve .NET Resul Çavuşoğlu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor