{"id":135,"date":"2012-04-27T11:51:00","date_gmt":"1970-01-01T00:00:00","guid":{"rendered":"http:\/\/www.yazilimmutfagi.com\/?p=135"},"modified":"2012-04-27T11:51:00","modified_gmt":"1970-01-01T00:00:00","slug":"yazilim-mutfagi-dersleri-csharp-ders-7-csharp-ile-kendi-hata-turlerimizi-nasil-olustururuz","status":"publish","type":"post","link":"https:\/\/www.yazilimmutfagi.com\/index.php\/2012\/04\/27\/yazilim-mutfagi-dersleri-csharp-ders-7-csharp-ile-kendi-hata-turlerimizi-nasil-olustururuz\/","title":{"rendered":"Yazilim Mutfagi Dersleri ( C#) Ders 7 &#8211; C# ile Kendi Hata T\u00fcrlerimizi Nasil Olustururuz"},"content":{"rendered":"<h1>C# ile Kendi Hata T&uuml;rlerimizi Nasil Olustururuz<\/h1>\n<p>C# programlama dili, kendi hata t&uuml;rlerimizi olusturmaya imkan verir. Bu sayede framework tarafindan tanimlanmamis olan hata t&uuml;r&uuml; ile karsilastigimizda kendi ihtiya&ccedil;larimiza g&ouml;re yeni hata t&uuml;rleri olusturabiliriz.<\/p>\n<p>C# da hata yakalama mekanizmasi hakkinda bilgi almak i&ccedil;in <a href=\"http:\/\/www.yazilimmutfagi.com\/MakaleOku.aspx?Makale=YazIlIm+MutfagI+Dersleri+(+CSharp)+Ders+6+-+Hata+Yakalama+(+Exception+Handling)+MekanizmasI&amp;MakaleKey=771096f6-3591-42f0-8b42-3a5a510cc3a7\">&ouml;nceki makalemize<\/a> g&ouml;z atabilirsiniz.<\/p>\n<p>Kendi hata t&uuml;r&uuml;m&uuml;z&uuml; olusturabilmek i&ccedil;in ilk olarak kendi class imizi olusturmaliyiz. Bunu yapabilmek i&ccedil;in nesneye dayali programlamlama konusunda bilgi sahibi olmaliyiz. Bununla iligli bilgileri <a href=\"http:\/\/www.yazilimmutfagi.com\/MakaleOku.aspx?Makale=YazIlIm+MutfagI+Dersleri+(+CSharp)+Ders+5+-+Nesneye+DayalI+Programlamaya+Giris&amp;MakaleKey=6e9c2dfb-8e80-4ffd-af72-b9e20ab0c988\">su makalemizden<\/a> &ouml;grenebilirsiniz.<\/p>\n<h2>.NET Framework de Hata Hiyerarsisi<\/h2>\n<p><strong>.Net de iki tip hata t&uuml;r&uuml; vardir:<\/strong><\/p>\n<ul>\n    <li>&Ccedil;alisma aninda(runtime) olusturulan (Common Language Runtime) hata t&uuml;rleri, bunlar System Exceptions diye adlandirilir.<\/li>\n    <li>Kullanici programi tarafindan &uuml;retilen hata t&uuml;rleri. Bunlar da Application Exceptions diye adlandirilir.<\/li>\n<\/ul>\n<h3>.Net framework de hata hiyerarsisi asagidaki gibidir.<\/h3>\n<p>&nbsp;<\/p>\n<center>  <img decoding=\"async\" src=\"http:\/\/www.yazilimmutfagi.com\/yuklenendosyalar\/image\/sabri\/Csharpdersler\/customexceptions\/exception_hierarchy.png\" alt=\"hata hiyerarsisi\" \/> <\/center>\n<p>&nbsp;<\/p>\n<p>Yukaridaki hiyerarsiden dolayi kullanici tarafindan olusturulan her hata ApplicationException sinifindan t&uuml;remek zorundadir. Asagidaki kod &ouml;rnegi OrnekHataTuru adinda yeni bir hata t&uuml;r&uuml; olusrurmamizi saglar.<\/p>\n<pre class=\"brush:csharp\">\nclass OrnekHataTuru : ApplicationException\n{\n    public OrnekHataTuru() : base (&quot;Sifira B&ouml;lme Hatasi&quot;)\n    {\n\n    }\n    public OrnekHataTuru(string message) : base(message)\n    {\n\n    }\n}\n<\/pre>\n<p><a href='www.yazilimmutfagi.com'>.<\/a><\/p>\n<p>Yukaridaki kod blugu ile hatamizi olusturduk. Simdi bir &ouml;rnekle bu hata t&uuml;r&uuml;n&uuml; kullanalim<\/p>\n<pre class=\"brush:csharp\">\nstatic double Bol(double a, double b)\n{\n    if (b == 0)\n        throw new OrnekHataTuru();\n    double c = a \/ b;\n    return c;\n}\n<\/pre>\n<p>Yukarida b&ouml;lme islemi yapan ve b&ouml;len 0 oldugu zaman hata firlatan bir fonksiyon yazdik. Simdi bu fonksiyonu main i&ccedil;inde kullanip sonu&ccedil;lari g&ouml;relim.<\/p>\n<pre class=\"brush:csharp\">\nstatic void Main()\n{\n    try\n    {\n        Console.WriteLine(&quot;Try blogu i&ccedil;inde&quot;);\n        double d = Bol(3,0);\n        Console.WriteLine(&quot;Bolum : {0}&quot;,d);\n\n    }catch(OrnekHataTuru e)\n    {\n        Console.WriteLine(&quot;Catch blogu i&ccedil;inde&quot;);\n        Console.WriteLine(&quot;Hata olustu.&quot;);\n        Console.WriteLine(&quot;Hata Mesaji&quot;+e.Message);\n    }\n}\n<\/pre>\n<h2>Kendi hata t&uuml;rlerimizi olustururken dikkat edilmesi gereken bazi &ouml;nemli noktalar sunlardir:<\/h2>\n<ul>\n    <li>.Net frameworkde t&uuml;m hata t&uuml;rlerinin sonunda &quot;Exception&quot; ifadesi yer alir. &Ouml;rnegin; SystemException, NullReferenceException vs. Bu y&uuml;zden tanimladiginiz hata t&uuml;r&uuml;n&uuml; isimlendirken hata t&uuml;r&uuml; isminin sonunda Exception ifadesini kullanmaniz &ouml;nerilir. Bizim yaptigimiz &ouml;rnekde buna dikkat etmedik ama siz edin \ud83d\ude42<\/li>\n    <li>Olusturdugunuz Hata t&uuml;r&uuml;n&uuml; her zaman ApplicationException sinifindan t&uuml;retin.<\/li>\n    <li>Hata yakalama ve firlatma mekanizmasi bir miktar performans kaybina yol a&ccedil;ar, Bu y&uuml;zden gereksiz hata firlatma ve yakalama islemleri yapmayin.<\/li>\n<\/ul>\n<p><a href='www.yazilimmutfagi.com'>.<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>C# programlama dili, kendi hata t&#252;rlerimizi olusturmaya imkan verir. Bu sayede framework tarafindan tanimlanmamis olan hata t&#252;r&#252; ile karsilastigimizda kendi ihtiya&#231;larimiza g&#246;re yeni hata t&#252;rleri olusturabiliriz. Bu yazimizda kendi hata t&#252;rlerimizi nasil olusturacagimiza ve nasil kullanacagimiza deginecegiz<\/p>\n","protected":false},"author":517,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[436],"tags":[5191,6041,5669,4449,4326,5077,5753,6096],"_links":{"self":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/135"}],"collection":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/users\/517"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/comments?post=135"}],"version-history":[{"count":0,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/135\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/media?parent=135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/categories?post=135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/tags?post=135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}