<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Exception Handling arşivleri - Keşif Ruhu</title>
	<atom:link href="https://www.kesifruhu.com/tag/exception-handling/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kesifruhu.com/tag/exception-handling/</link>
	<description>Keşfet, Deneyimle, Paylaş</description>
	<lastBuildDate>Mon, 12 May 2025 12:19:32 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://www.kesifruhu.com/wp-content/uploads/2024/09/siteico-150x150.png</url>
	<title>Exception Handling arşivleri - Keşif Ruhu</title>
	<link>https://www.kesifruhu.com/tag/exception-handling/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>12. Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları</title>
		<link>https://www.kesifruhu.com/yazilim/12-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/</link>
					<comments>https://www.kesifruhu.com/yazilim/12-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/#respond</comments>
		
		<dc:creator><![CDATA[darklaz]]></dc:creator>
		<pubDate>Mon, 12 May 2025 12:19:31 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[Exception Handling]]></category>
		<category><![CDATA[Hata Yakalama]]></category>
		<category><![CDATA[Try-Catch]]></category>
		<guid isPermaLink="false">https://www.kesifruhu.com/?p=597</guid>

					<description><![CDATA[<p>12. Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları C# programlama dilinde, sağlam ve güvenilir uygulamalar geliştirmek için hata yakalama (exception handling) mekanizması hayati bir öneme <a class="mh-excerpt-more" href="https://www.kesifruhu.com/yazilim/12-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/" title="12. Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları">[...]</a></p>
<p><a href="https://www.kesifruhu.com/yazilim/12-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/">12. Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları</a> yazısı ilk önce <a href="https://www.kesifruhu.com">Keşif Ruhu</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img decoding="async" src="https://images.pexels.com/photos/577585/pexels-photo-577585.jpeg?auto=compress&amp;cs=tinysrgb&amp;fit=crop&amp;h=627&amp;w=1200" alt="image text"/></figure>



<p></p>



<h1 class="wp-block-heading">12. Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları</h1>



<p>C# programlama dilinde, sağlam ve güvenilir uygulamalar geliştirmek için hata yakalama (exception handling) mekanizması hayati bir öneme sahiptir. Hata yakalama, programın çalışma zamanında beklenmedik durumlarla karşılaştığında çökmesini engeller ve uygulamanın kontrollü bir şekilde devam etmesini sağlar. Bu makalede, C# dilindeki hata yakalama mekanizmasını, <code>try-catch-finally</code> bloklarını ve bu blokların nasıl kullanıldığını ayrıntılı olarak inceleyeceğiz.</p>



<h2 class="wp-block-heading">Hata (Exception) Nedir?</h2>



<p>Bir <strong>hata (exception)</strong>, programın normal akışını bozan ve beklenmedik bir durumun ortaya çıkmasıdır. Bu durumlar, sıfıra bölme, geçersiz dosya yolu, bellek yetersizliği veya ağ bağlantısı sorunları gibi çeşitli nedenlerden kaynaklanabilir. C# dilinde, hatalar nesneler olarak temsil edilir ve <code>System.Exception</code> sınıfından türetilirler.</p>



<h2 class="wp-block-heading">Try-Catch-Finally Blokları</h2>



<p>C# dilinde hata yakalama, <code>try-catch-finally</code> blokları kullanılarak gerçekleştirilir. Bu bloklar, programın hatalara karşı korunmasını sağlar ve hataların kontrollü bir şekilde ele alınmasına olanak tanır.</p>



<h3 class="wp-block-heading">Try Bloğu</h3>



<p><code>try</code> bloğu, hatalara neden olabilecek kodun yerleştirildiği bölümdür. Programın normal akışı içinde çalıştırılması beklenen kod bu blok içinde yer alır. Eğer <code>try</code> bloğu içinde bir hata meydana gelirse, programın akışı hemen <code>catch</code> bloğuna geçer.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">C#</span><span role="button" tabindex="0" data-code="try
{
    // Hata oluşabilecek kod
    int sayi1 = 10;
    int sayi2 = 0;
    int sonuc = sayi1 / sayi2; // Sıfıra bölme hatası
    Console.WriteLine(&quot;Sonuç: &quot; + sonuc);
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #C586C0">try</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #6A9955">    // Hata oluşabilecek kod</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">sayi1</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">sayi2</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">sonuc</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">sayi1</span><span style="color: #D4D4D4"> / </span><span style="color: #9CDCFE">sayi2</span><span style="color: #D4D4D4">; </span><span style="color: #6A9955">// Sıfıra bölme hatası</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Sonuç: &quot;</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">sonuc</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<h3 class="wp-block-heading">Catch Bloğu</h3>



<p><code>catch</code> bloğu, <code>try</code> bloğu içinde meydana gelen hataları yakalar ve işler. Her <code>try</code> bloğu için birden fazla <code>catch</code> bloğu tanımlanabilir. Bu, farklı türdeki hataların farklı şekillerde ele alınmasını sağlar. <code>catch</code> bloğu, yakalayacağı hata türünü belirtir. Eğer <code>try</code> bloğu içinde belirtilen türde bir hata meydana gelirse, ilgili <code>catch</code> bloğu çalıştırılır.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">C#</span><span role="button" tabindex="0" data-code="catch (DivideByZeroException ex)
{
    // Sıfıra bölme hatası yakalandı
    Console.WriteLine(&quot;Hata: Sıfıra bölme hatası oluştu.&quot;);
    Console.WriteLine(&quot;Hata mesajı: &quot; + ex.Message);
}
catch (Exception ex)
{
    // Genel hata yakalama bloğu
    Console.WriteLine(&quot;Bir hata oluştu.&quot;);
    Console.WriteLine(&quot;Hata mesajı: &quot; + ex.Message);
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">DivideByZeroException</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ex</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #6A9955">    // Sıfıra bölme hatası yakalandı</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Hata: Sıfıra bölme hatası oluştu.&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Hata mesajı: &quot;</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">ex</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Message</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">Exception</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ex</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #6A9955">    // Genel hata yakalama bloğu</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Bir hata oluştu.&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Hata mesajı: &quot;</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">ex</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Message</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<p>Yukarıdaki örnekte, ilk <code>catch</code> bloğu <code>DivideByZeroException</code> türündeki hataları yakalar. Eğer <code>try</code> bloğu içinde sıfıra bölme hatası oluşursa, bu <code>catch</code> bloğu çalıştırılır. İkinci <code>catch</code> bloğu ise genel bir hata yakalama bloğudur ve <code>Exception</code> sınıfından türetilmiş herhangi bir hatayı yakalar. Bu blok, belirli bir hata türü için <code>catch</code> bloğu tanımlanmamış hataları ele almak için kullanılır.</p>



<h3 class="wp-block-heading">Finally Bloğu</h3>



<p><code>finally</code> bloğu, <code>try</code> bloğu içinde hata oluşsa da oluşmasa da her zaman çalıştırılan bir bölümdür. Bu blok, genellikle kaynakların serbest bırakılması (örneğin, dosya kapatma, veritabanı bağlantısını sonlandırma) gibi işlemler için kullanılır. <code>finally</code> bloğu, hata oluşsa bile bu işlemlerin mutlaka yapılmasını garanti eder.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">C#</span><span role="button" tabindex="0" data-code="finally
{
    // Kaynakları serbest bırakma işlemleri
    Console.WriteLine(&quot;Finally bloğu çalıştı.&quot;);
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #C586C0">finally</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #6A9955">    // Kaynakları serbest bırakma işlemleri</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Finally bloğu çalıştı.&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<h2 class="wp-block-heading">Try-Catch-Finally Bloklarının Kullanımı</h2>



<p><code>try-catch-finally</code> bloklarının kullanımı, programın güvenilirliğini artırmak için önemlidir. İşte bir örnek:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">C#</span><span role="button" tabindex="0" data-code="try
{
    // Dosyayı açma
    StreamReader dosya = new StreamReader(&quot;dosya.txt&quot;);

    // Dosyadan veri okuma
    string satir = dosya.ReadLine();
    Console.WriteLine(&quot;Dosyadan okunan satır: &quot; + satir);

    // Dosyayı kapatma (finally bloğunda da yapılabilir)
    dosya.Close();
}
catch (FileNotFoundException ex)
{
    // Dosya bulunamadı hatası
    Console.WriteLine(&quot;Hata: Dosya bulunamadı.&quot;);
    Console.WriteLine(&quot;Hata mesajı: &quot; + ex.Message);
}
catch (IOException ex)
{
    // Girdi/çıktı hatası
    Console.WriteLine(&quot;Hata: Dosya okuma/yazma hatası.&quot;);
    Console.WriteLine(&quot;Hata mesajı: &quot; + ex.Message);
}
finally
{
    // Dosyayı kapatma (eğer açılmışsa)
    if (dosya != null)
    {
        dosya.Close();
    }
    Console.WriteLine(&quot;Finally bloğu çalıştı.&quot;);
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #C586C0">try</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #6A9955">    // Dosyayı açma</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4EC9B0">StreamReader</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">dosya</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">StreamReader</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;dosya.txt&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">    // Dosyadan veri okuma</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">string</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">satir</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">dosya</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">ReadLine</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Dosyadan okunan satır: &quot;</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">satir</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">    // Dosyayı kapatma (finally bloğunda da yapılabilir)</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">dosya</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Close</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">FileNotFoundException</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ex</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #6A9955">    // Dosya bulunamadı hatası</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Hata: Dosya bulunamadı.&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Hata mesajı: &quot;</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">ex</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Message</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">IOException</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ex</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #6A9955">    // Girdi/çıktı hatası</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Hata: Dosya okuma/yazma hatası.&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Hata mesajı: &quot;</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">ex</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Message</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"><span style="color: #C586C0">finally</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #6A9955">    // Dosyayı kapatma (eğer açılmışsa)</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">dosya</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">dosya</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Close</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">WriteLine</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Finally bloğu çalıştı.&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<p>Bu örnekte, <code>try</code> bloğu içinde bir dosya açılır, dosyadan veri okunur ve dosya kapatılır. Eğer dosya bulunamazsa veya dosya okuma/yazma sırasında bir hata oluşursa, ilgili <code>catch</code> bloğu çalıştırılır. <code>finally</code> bloğu ise, dosya açılmış olsun veya olmasın, dosyanın kapatılmasını garanti eder.</p>



<h2 class="wp-block-heading">Hata Türleri</h2>



<p>C# dilinde birçok farklı hata türü bulunmaktadır. En sık karşılaşılan hata türlerinden bazıları şunlardır:</p>



<ul class="wp-block-list">
<li><strong><code>DivideByZeroException</code>:</strong> Sıfıra bölme hatası.</li>



<li><strong><code>NullReferenceException</code>:</strong> Null referans hatası (bir nesneye atanmamış bir değişkene erişmeye çalışma).</li>



<li><strong><code>IndexOutOfRangeException</code>:</strong> Dizi sınırlarının dışına çıkma hatası.</li>



<li><strong><code>FileNotFoundException</code>:</strong> Dosya bulunamadı hatası.</li>



<li><strong><code>IOException</code>:</strong> Girdi/çıktı hatası.</li>



<li><strong><code>FormatException</code>:</strong> Yanlış biçimde veri girişi hatası (örneğin, bir metni sayıya dönüştürmeye çalışma).</li>
</ul>



<h2 class="wp-block-heading">Özel Hata (Exception) Sınıfları Oluşturma</h2>



<p>C# dilinde, kendi özel hata sınıflarınızı da oluşturabilirsiniz. Bu, uygulamanızdaki belirli durumlar için özelleştirilmiş hata mesajları ve davranışlar sağlamanıza olanak tanır. Özel bir hata sınıfı oluşturmak için, <code>Exception</code> sınıfından türetmeniz yeterlidir.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">C#</span><span role="button" tabindex="0" data-code="public class BenimOzelHatam : Exception
{
    public BenimOzelHatam(string message) : base(message)
    {
    }
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">BenimOzelHatam</span><span style="color: #D4D4D4"> : </span><span style="color: #4EC9B0">Exception</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">BenimOzelHatam</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">string</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">message</span><span style="color: #D4D4D4">) : </span><span style="color: #569CD6">base</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">message</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<p>Bu örnekte, <code>BenimOzelHatam</code> adında bir özel hata sınıfı oluşturulmuştur. Bu sınıf, <code>Exception</code> sınıfından türetilmiştir ve bir hata mesajı alarak temel sınıfın kurucusunu çağırır.</p>



<h2 class="wp-block-heading">Hata Fırlatma (Throwing Exceptions)</h2>



<p>Bazen, bir metot içinde bir hata tespit ettiğinizde, bu hatayı çağıran metoda bildirmek isteyebilirsiniz. Bu durumda, <code>throw</code> ifadesini kullanarak bir hata fırlatabilirsiniz.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">C#</span><span role="button" tabindex="0" data-code="public void KontrolEt(int sayi)
{
    if (sayi < 0)
    {
        throw new ArgumentException(&quot;Sayı negatif olamaz.&quot;);
    }
    // Diğer işlemler
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">KontrolEt</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">sayi</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">sayi</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">throw</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">ArgumentException</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Sayı negatif olamaz.&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #6A9955">    // Diğer işlemler</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<p>Bu örnekte, <code>KontrolEt</code> metodu, gelen sayının negatif olup olmadığını kontrol eder. Eğer sayı negatif ise, bir <code>ArgumentException</code> hatası fırlatılır.</p>



<h2 class="wp-block-heading">Sonuç</h2>



<p>C# programlama dilinde hata yakalama (exception handling), sağlam ve güvenilir uygulamalar geliştirmek için kritik bir öneme sahiptir. <code>try-catch-finally</code> blokları, programın hatalara karşı korunmasını sağlar ve hataların kontrollü bir şekilde ele alınmasına olanak tanır. Bu blokları doğru kullanarak, uygulamanızın çalışma zamanında beklenmedik durumlarla başa çıkmasını ve kullanıcı deneyimini iyileştirmesini sağlayabilirsiniz. Ayrıca, özel hata sınıfları oluşturarak ve hata fırlatarak, uygulamanızın hata yönetimi yeteneklerini daha da geliştirebilirsiniz.</p>
<p><a href="https://www.kesifruhu.com/yazilim/12-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/">12. Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları</a> yazısı ilk önce <a href="https://www.kesifruhu.com">Keşif Ruhu</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.kesifruhu.com/yazilim/12-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>12. Hata Yakalama (Try-Except-Finally Blokları)</title>
		<link>https://www.kesifruhu.com/yazilim/12-hata-yakalama-try-except-finally-bloklari/</link>
					<comments>https://www.kesifruhu.com/yazilim/12-hata-yakalama-try-except-finally-bloklari/#respond</comments>
		
		<dc:creator><![CDATA[darklaz]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 14:40:02 +0000</pubDate>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[Exception Handling]]></category>
		<category><![CDATA[Hata Yakalama]]></category>
		<category><![CDATA[Try-Except]]></category>
		<category><![CDATA[Try-Finally]]></category>
		<guid isPermaLink="false">https://www.kesifruhu.com/?p=551</guid>

					<description><![CDATA[<p>12. Hata Yakalama (Try-Except-Finally Blokları) Delphi programlama dilinde, hata yakalama, uygulamanızın beklenmedik durumlarla başa çıkmasını sağlayan kritik bir mekanizmadır. Try-Except-Finally blokları, potansiyel hataların oluşabileceği kod <a class="mh-excerpt-more" href="https://www.kesifruhu.com/yazilim/12-hata-yakalama-try-except-finally-bloklari/" title="12. Hata Yakalama (Try-Except-Finally Blokları)">[...]</a></p>
<p><a href="https://www.kesifruhu.com/yazilim/12-hata-yakalama-try-except-finally-bloklari/">12. Hata Yakalama (Try-Except-Finally Blokları)</a> yazısı ilk önce <a href="https://www.kesifruhu.com">Keşif Ruhu</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image"><img decoding="async" src="https://images.pexels.com/photos/31343632/pexels-photo-31343632.jpeg?auto=compress&amp;cs=tinysrgb&amp;fit=crop&amp;h=627&amp;w=1200" alt="image text"/></figure>



<p></p>



<h1 class="wp-block-heading">12. Hata Yakalama (Try-Except-Finally Blokları)</h1>



<p>Delphi programlama dilinde, <em>hata yakalama</em>, uygulamanızın beklenmedik durumlarla başa çıkmasını sağlayan kritik bir mekanizmadır. <code>Try-Except-Finally</code> blokları, potansiyel hataların oluşabileceği kod bölümlerini güvenli bir şekilde yönetmek ve uygulamanın çökmesini önlemek için kullanılır. Bu makalede, Delphi&#8217;de hata yakalama yöntemlerini, <code>Try-Except-Finally</code> bloklarının nasıl kullanıldığını ve iyi bir hata yönetimi stratejisinin nasıl oluşturulacağını ayrıntılı olarak inceleyeceğiz.</p>



<h2 class="wp-block-heading">Hata Yönetiminin Önemi</h2>



<p>Bir uygulamanın sağlamlığı ve kullanıcı deneyimi, hata yönetimi ile doğrudan ilişkilidir. İyi bir hata yönetimi, uygulamanın beklenmedik durumlarda düzgün bir şekilde çalışmaya devam etmesini, kullanıcıya anlamlı mesajlar göstermesini ve veri kaybını önlemesini sağlar. Özellikle kritik sistemlerde (örneğin, finansal uygulamalar, tıbbi cihazlar) hata yönetimi hayati öneme sahiptir.</p>



<p>Hata yönetimi aşağıdaki avantajları sunar:</p>



<ul class="wp-block-list">
<li><strong>Uygulama Kararlılığı:</strong> Beklenmedik hataların uygulamanın çökmesine neden olmasını engeller.</li>



<li><strong>Kullanıcı Deneyimi:</strong> Hatalar hakkında kullanıcıya anlaşılır ve yardımcı bilgiler sunar.</li>



<li><strong>Veri Bütünlüğü:</strong> Hata durumlarında veri kaybını veya bozulmasını önler.</li>



<li><strong>Hata Ayıklama Kolaylığı:</strong> Hataların nedenlerini belirlemeye ve düzeltmeye yardımcı olur.</li>
</ul>



<h2 class="wp-block-heading">Try-Except Blokları</h2>



<p><code>Try-Except</code> blokları, hata yakalamanın temel yapı taşıdır. <code>Try</code> bloğu, potansiyel hataların oluşabileceği kodu içerir. Eğer <code>Try</code> bloğu içerisinde bir hata oluşursa, program akışı ilgili <code>Except</code> bloğuna yönlendirilir.</p>



<h3 class="wp-block-heading">Temel Sözdizimi</h3>



<p><code>Try-Except</code> bloğunun temel sözdizimi aşağıdaki gibidir:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Pascal</span><span role="button" tabindex="0" data-code="try
  // Hata oluşabilecek kod
except
  on E: Exception do
  begin
    // Hata işleme kodu
  end;
end;
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">try</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// Hata oluşabilecek kod</span></span>
<span class="line"><span style="color: #569CD6">except</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">on</span><span style="color: #D4D4D4"> E: Exception </span><span style="color: #C586C0">do</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">begin</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Hata işleme kodu</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<p>Burada:</p>



<ul class="wp-block-list">
<li><code>try</code>: Hata oluşabilecek kodun başladığı bloğu belirtir.</li>



<li><code>except</code>: Hata oluştuğunda çalışacak kodun başladığı bloğu belirtir.</li>



<li><code>on E: Exception do</code>: Belirli bir hata türünü (<code>Exception</code> veya türetilmiş bir sınıf) yakalamak için kullanılır. <code>E</code>, yakalanan hata nesnesini temsil eder.</li>



<li><code>begin ... end</code>: Hata işleme kodunu içerir.</li>
</ul>



<h3 class="wp-block-heading">Örnek Kullanım</h3>



<p>Aşağıdaki örnek, bir dosya açma işlemi sırasında oluşabilecek hataları yakalamayı göstermektedir:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Pascal</span><span role="button" tabindex="0" data-code="var
  MyFile: TextFile;
begin
  try
    AssignFile(MyFile, 'C:\NonExistentFile.txt');
    Reset(MyFile);
    // Dosya işlemleri
  except
    on E: Exception do
    begin
      ShowMessage('Dosya açılırken bir hata oluştu: ' + E.Message);
    end;
  end;
  CloseFile(MyFile);
end;
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">var</span></span>
<span class="line"><span style="color: #D4D4D4">  MyFile: TextFile;</span></span>
<span class="line"><span style="color: #569CD6">begin</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">try</span></span>
<span class="line"><span style="color: #D4D4D4">    AssignFile(MyFile, </span><span style="color: #CE9178">&#39;C:\NonExistentFile.txt&#39;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    Reset(MyFile);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Dosya işlemleri</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">except</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">on</span><span style="color: #D4D4D4"> E: Exception </span><span style="color: #C586C0">do</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">begin</span></span>
<span class="line"><span style="color: #D4D4D4">      ShowMessage(</span><span style="color: #CE9178">&#39;Dosya açılırken bir hata oluştu: &#39;</span><span style="color: #D4D4D4"> + E.Message);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  CloseFile(MyFile);</span></span>
<span class="line"><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<p>Bu kod, <code>C:\NonExistentFile.txt</code> dosyasını açmaya çalışır. Eğer dosya bulunamazsa veya başka bir hata oluşursa, <code>Except</code> bloğu devreye girer ve kullanıcıya bir hata mesajı gösterilir.</p>



<h2 class="wp-block-heading">Try-Finally Blokları</h2>



<p><code>Try-Finally</code> blokları, bir kod bloğunun her durumda (hata oluşsa da oluşmasa da) belirli işlemlerin yapılmasını sağlamak için kullanılır. Bu bloklar, özellikle kaynakların (örneğin, dosyalar, bellek, veritabanı bağlantıları) serbest bırakılması gerektiğinde önemlidir.</p>



<h3 class="wp-block-heading">Temel Sözdizimi</h3>



<p><code>Try-Finally</code> bloğunun temel sözdizimi aşağıdaki gibidir:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Pascal</span><span role="button" tabindex="0" data-code="try
  // Korunan kod
finally
  // Her durumda çalışacak kod
end;
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">try</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// Korunan kod</span></span>
<span class="line"><span style="color: #569CD6">finally</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// Her durumda çalışacak kod</span></span>
<span class="line"><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<p>Burada:</p>



<ul class="wp-block-list">
<li><code>try</code>: Korunması gereken kodun başladığı bloğu belirtir.</li>



<li><code>finally</code>: <code>Try</code> bloğundan sonra her durumda (hata oluşsa da oluşmasa da) çalışacak kodun başladığı bloğu belirtir.</li>
</ul>



<h3 class="wp-block-heading">Örnek Kullanım</h3>



<p>Aşağıdaki örnek, bir dosyanın her durumda kapatılmasını sağlamayı göstermektedir:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Pascal</span><span role="button" tabindex="0" data-code="var
  MyFile: TextFile;
begin
  AssignFile(MyFile, 'C:\MyFile.txt');
  try
    Reset(MyFile);
    // Dosya işlemleri
  finally
    CloseFile(MyFile);
  end;
end;
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">var</span></span>
<span class="line"><span style="color: #D4D4D4">  MyFile: TextFile;</span></span>
<span class="line"><span style="color: #569CD6">begin</span></span>
<span class="line"><span style="color: #D4D4D4">  AssignFile(MyFile, </span><span style="color: #CE9178">&#39;C:\MyFile.txt&#39;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">try</span></span>
<span class="line"><span style="color: #D4D4D4">    Reset(MyFile);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Dosya işlemleri</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">finally</span></span>
<span class="line"><span style="color: #D4D4D4">    CloseFile(MyFile);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<p>Bu kod, <code>C:\MyFile.txt</code> dosyasını açar ve bazı işlemler yapar. <code>Finally</code> bloğu, dosya açma işlemi başarılı olsa da olmasa da <code>CloseFile</code> komutunu çalıştırarak dosyanın kapatılmasını garanti eder.</p>



<h2 class="wp-block-heading">Try-Except-Finally Bloklarının Birleşimi</h2>



<p><code>Try-Except</code> ve <code>Try-Finally</code> blokları, daha karmaşık hata yönetimi senaryolarında birleştirilebilir. Bu, hem hataları yakalamayı hem de kaynakları serbest bırakmayı sağlar.</p>



<h3 class="wp-block-heading">Temel Sözdizimi</h3>



<p><code>Try-Except-Finally</code> bloğunun temel sözdizimi aşağıdaki gibidir:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Pascal</span><span role="button" tabindex="0" data-code="try
  // Hata oluşabilecek kod
except
  on E: Exception do
  begin
    // Hata işleme kodu
  end;
finally
  // Her durumda çalışacak kod
end;
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">try</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// Hata oluşabilecek kod</span></span>
<span class="line"><span style="color: #569CD6">except</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">on</span><span style="color: #D4D4D4"> E: Exception </span><span style="color: #C586C0">do</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">begin</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Hata işleme kodu</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">finally</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// Her durumda çalışacak kod</span></span>
<span class="line"><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<h3 class="wp-block-heading">Örnek Kullanım</h3>



<p>Aşağıdaki örnek, hem dosya açma hatalarını yakalamayı hem de dosyanın her durumda kapatılmasını sağlamayı göstermektedir:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Pascal</span><span role="button" tabindex="0" data-code="var
  MyFile: TextFile;
begin
  AssignFile(MyFile, 'C:\MyFile.txt');
  try
    Reset(MyFile);
    // Dosya işlemleri
  except
    on E: Exception do
    begin
      ShowMessage('Dosya açılırken veya işlenirken bir hata oluştu: ' + E.Message);
    end;
finally
    CloseFile(MyFile);
  end;
end;
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">var</span></span>
<span class="line"><span style="color: #D4D4D4">  MyFile: TextFile;</span></span>
<span class="line"><span style="color: #569CD6">begin</span></span>
<span class="line"><span style="color: #D4D4D4">  AssignFile(MyFile, </span><span style="color: #CE9178">&#39;C:\MyFile.txt&#39;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">try</span></span>
<span class="line"><span style="color: #D4D4D4">    Reset(MyFile);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Dosya işlemleri</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">except</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">on</span><span style="color: #D4D4D4"> E: Exception </span><span style="color: #C586C0">do</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">begin</span></span>
<span class="line"><span style="color: #D4D4D4">      ShowMessage(</span><span style="color: #CE9178">&#39;Dosya açılırken veya işlenirken bir hata oluştu: &#39;</span><span style="color: #D4D4D4"> + E.Message);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">finally</span></span>
<span class="line"><span style="color: #D4D4D4">    CloseFile(MyFile);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<p>Bu kod, <code>C:\MyFile.txt</code> dosyasını açar ve bazı işlemler yapar. Eğer dosya açılırken veya işlenirken bir hata oluşursa, <code>Except</code> bloğu devreye girer ve kullanıcıya bir hata mesajı gösterilir. <code>Finally</code> bloğu, dosya açma işlemi başarılı olsa da olmasa da <code>CloseFile</code> komutunu çalıştırarak dosyanın kapatılmasını garanti eder.</p>



<h2 class="wp-block-heading">Özel Hata Sınıfları Oluşturma</h2>



<p>Delphi, kendi özel hata sınıflarınızı oluşturmanıza olanak tanır. Bu, uygulamanızın belirli ihtiyaçlarına uygun hata yönetimi sağlamanıza yardımcı olur. Özel hata sınıfları, <code>Exception</code> sınıfından türetilir ve belirli hata durumlarını temsil eder.</p>



<h3 class="wp-block-heading">Örnek Hata Sınıfı</h3>



<p>Aşağıdaki örnek, <code>EInvalidData</code> adında bir özel hata sınıfı tanımlamayı göstermektedir:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Pascal</span><span role="button" tabindex="0" data-code="type
  EInvalidData = class(Exception)
  private
    FData: string;
  public
    constructor Create(const Message, Data: string);
    property Data: string read FData;
  end;

constructor EInvalidData.Create(const Message, Data: string);
begin
  inherited Create(Message);
  FData := Data;
end;
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">type</span></span>
<span class="line"><span style="color: #D4D4D4">  EInvalidData = </span><span style="color: #569CD6">class</span><span style="color: #D4D4D4">(Exception)</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">private</span></span>
<span class="line"><span style="color: #D4D4D4">    FData: </span><span style="color: #569CD6">string</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">public</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">constructor</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Create</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> Message, Data: </span><span style="color: #569CD6">string</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">property</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Data</span><span style="color: #D4D4D4">: </span><span style="color: #569CD6">string</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">read</span><span style="color: #D4D4D4"> FData;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">constructor</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">EInvalidData.Create</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> Message, Data: </span><span style="color: #569CD6">string</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #569CD6">begin</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">inherited</span><span style="color: #D4D4D4"> Create(Message);</span></span>
<span class="line"><span style="color: #D4D4D4">  FData := Data;</span></span>
<span class="line"><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<h3 class="wp-block-heading">Kullanım Örneği</h3>



<p>Bu özel hata sınıfını kullanarak, geçersiz veri tespit edildiğinde bir hata fırlatabilirsiniz:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Pascal</span><span role="button" tabindex="0" data-code="procedure ProcessData(Data: string);
begin
  if not IsValidData(Data) then
    raise EInvalidData.Create('Geçersiz veri tespit edildi!', Data);
  // Veri işleme
end;
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">procedure</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">ProcessData</span><span style="color: #D4D4D4">(Data: </span><span style="color: #569CD6">string</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #569CD6">begin</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">if</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> IsValidData(Data) </span><span style="color: #569CD6">then</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">raise</span><span style="color: #D4D4D4"> EInvalidData.Create(</span><span style="color: #CE9178">&#39;Geçersiz veri tespit edildi!&#39;</span><span style="color: #D4D4D4">, Data);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// Veri işleme</span></span>
<span class="line"><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<p>Bu kod, <code>IsValidData</code> fonksiyonu tarafından geçersiz olarak tespit edilen veriler için bir <code>EInvalidData</code> hatası fırlatır. Bu hatayı yakalayarak, uygulamanızın belirli bir hata durumuna nasıl tepki vereceğini kontrol edebilirsiniz.</p>



<h2 class="wp-block-heading">İyi Bir Hata Yönetimi Stratejisi Oluşturma</h2>



<p>İyi bir hata yönetimi stratejisi, uygulamanızın sağlamlığını ve güvenilirliğini artırır. Aşağıdaki adımlar, etkili bir hata yönetimi stratejisi oluşturmanıza yardımcı olabilir:</p>



<ol class="wp-block-list">
<li><strong>Potansiyel Hata Kaynaklarını Belirleyin:</strong> Uygulamanızda hataların oluşabileceği tüm noktaları (örneğin, dosya işlemleri, veritabanı erişimi, kullanıcı girişi) belirleyin.</li>



<li><strong>Hata Yakalama Blokları Kullanın:</strong> Potansiyel hata kaynaklarının etrafına <code>Try-Except-Finally</code> blokları yerleştirin.</li>



<li><strong>Özel Hata Sınıfları Oluşturun:</strong> Uygulamanızın belirli ihtiyaçlarına uygun özel hata sınıfları oluşturun.</li>



<li><strong>Hata Mesajlarını Anlamlı Hale Getirin:</strong> Kullanıcılara anlaşılır ve yardımcı hata mesajları gösterin.</li>



<li><strong>Hata Günlüğü Tutun:</strong> Hataları bir günlük dosyasına kaydedin, böylece daha sonra analiz edebilir ve düzeltebilirsiniz.</li>



<li><strong>Test Edin:</strong> Hata yönetimi stratejinizi kapsamlı bir şekilde test edin. Farklı hata senaryolarını simüle edin ve uygulamanızın doğru şekilde tepki verdiğinden emin olun.</li>
</ol>



<h2 class="wp-block-heading">Sonuç</h2>



<p>Delphi&#8217;de hata yakalama, uygulamanızın güvenilirliğini ve kararlılığını sağlamak için kritik bir öneme sahiptir. <code>Try-Except-Finally</code> blokları, potansiyel hataların oluşabileceği kod bölümlerini güvenli bir şekilde yönetmek ve uygulamanın çökmesini önlemek için güçlü bir araçtır. İyi bir hata yönetimi stratejisi oluşturarak, uygulamanızın beklenmedik durumlarla başa çıkmasını ve kullanıcıya sorunsuz bir deneyim sunmasını sağlayabilirsiniz.</p>
<p><a href="https://www.kesifruhu.com/yazilim/12-hata-yakalama-try-except-finally-bloklari/">12. Hata Yakalama (Try-Except-Finally Blokları)</a> yazısı ilk önce <a href="https://www.kesifruhu.com">Keşif Ruhu</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.kesifruhu.com/yazilim/12-hata-yakalama-try-except-finally-bloklari/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>13.Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları</title>
		<link>https://www.kesifruhu.com/yazilim/13-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/</link>
					<comments>https://www.kesifruhu.com/yazilim/13-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/#respond</comments>
		
		<dc:creator><![CDATA[darklaz]]></dc:creator>
		<pubDate>Tue, 08 Apr 2025 16:12:58 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[Exception Handling]]></category>
		<category><![CDATA[Hata Yakalama]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Try-Catch]]></category>
		<guid isPermaLink="false">https://www.kesifruhu.com/?p=489</guid>

					<description><![CDATA[<p>13. Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları Java, sağlam ve hatasız uygulamalar geliştirmek için güçlü bir hata yakalama mekanizması sunar. Bu mekanizma, Exception Handling <a class="mh-excerpt-more" href="https://www.kesifruhu.com/yazilim/13-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/" title="13.Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları">[...]</a></p>
<p><a href="https://www.kesifruhu.com/yazilim/13-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/">13.Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları</a> yazısı ilk önce <a href="https://www.kesifruhu.com">Keşif Ruhu</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image"><img decoding="async" src="https://images.pexels.com/photos/6212801/pexels-photo-6212801.jpeg?auto=compress&amp;cs=tinysrgb&amp;fit=crop&amp;h=627&amp;w=1200" alt="image text"/></figure>



<p></p>



<h1 class="wp-block-heading">13. Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları</h1>



<p>Java, sağlam ve hatasız uygulamalar geliştirmek için güçlü bir hata yakalama mekanizması sunar. Bu mekanizma, <strong><em>Exception Handling</em></strong> (İstisna Yönetimi) olarak adlandırılır. Exception Handling, programın normal akışını bozan beklenmedik durumları (örneğin, dosya bulunamaması, geçersiz veri girişi, aritmetik hatalar) ele almayı sağlar. Bu makalede, Java&#8217;da Exception Handling&#8217;in ne olduğunu, nasıl çalıştığını ve <code>try-catch-finally</code> bloklarının kullanımını ayrıntılı olarak inceleyeceğiz.</p>



<h2 class="wp-block-heading">Exception Nedir?</h2>



<p><strong>Exception</strong>, programın yürütülmesi sırasında meydana gelen ve normal akışı kesintiye uğratan bir olaydır. Java&#8217;da, exception&#8217;lar nesnelerdir ve <code>java.lang.Throwable</code> sınıfından türetilirler. Throwable sınıfının iki ana alt sınıfı vardır: <code>Exception</code> ve <code>Error</code>.</p>



<ul class="wp-block-list">
<li><strong>Exception:</strong> Uygulamanın kendisinin ele alabileceği durumları temsil eder. Örneğin, <code>IOException</code> (giriş/çıkış hatası), <code>ArithmeticException</code> (aritmetik hata), <code>NullPointerException</code> (null referans hatası) gibi.</li>



<li><strong>Error:</strong> Uygulamanın genellikle ele alamayacağı ciddi sorunları temsil eder. Örneğin, <code>OutOfMemoryError</code> (bellek yetersiz hatası), <code>StackOverflowError</code> (stack taşması hatası) gibi.</li>
</ul>



<p>Exception Handling, genellikle <code>Exception</code> sınıfından türetilen nesnelerle ilgilenir.</p>



<h2 class="wp-block-heading">Neden Exception Handling Kullanmalıyız?</h2>



<p>Exception Handling kullanmanın temel amacı, programın beklenmedik hatalar karşısında çökmesini önlemek ve kullanıcıya anlamlı geri bildirim sağlamaktır. Exception Handling sayesinde şunları yapabiliriz:</p>



<ul class="wp-block-list">
<li>Programın normal akışını koruyabiliriz.</li>



<li>Hataları tespit edip düzeltebiliriz.</li>



<li>Kullanıcıya hatalar hakkında bilgi verebiliriz.</li>



<li>Kaynakları (dosyalar, veritabanı bağlantıları vb.) düzgün bir şekilde serbest bırakabiliriz.</li>
</ul>



<h2 class="wp-block-heading">Try-Catch-Finally Blokları</h2>



<p>Java&#8217;da Exception Handling, <code>try-catch-finally</code> blokları kullanılarak gerçekleştirilir. Bu bloklar, hata oluşabilecek kod parçalarını güvenli bir şekilde çalıştırmamızı ve hataları ele almamızı sağlar.</p>



<h3 class="wp-block-heading">Try Bloğu</h3>



<p><code>try</code> bloğu, hata oluşma potansiyeli olan kodları içerir. Programın hata verebileceğini düşündüğümüz kısımlar bu blok içine alınır. Eğer <code>try</code> bloğu içinde bir exception oluşursa, program hemen <code>catch</code> bloğuna geçer.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Java</span><span role="button" tabindex="0" data-code="
try {
    // Hata oluşma potansiyeli olan kod
    int result = 10 / 0; // ArithmeticException oluşur
    System.out.println(&quot;Sonuç: &quot; + result); // Bu satır çalışmaz
} catch (ExceptionType e) {
    // Exception ele alınır
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color: #C586C0">try</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Hata oluşma potansiyeli olan kod</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4EC9B0">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">result</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4"> / </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">; </span><span style="color: #6A9955">// ArithmeticException oluşur</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">out</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">println</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Sonuç: &quot;</span><span style="color: #D4D4D4"> + result); </span><span style="color: #6A9955">// Bu satır çalışmaz</span></span>
<span class="line"><span style="color: #D4D4D4">} </span><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">ExceptionType</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Exception ele alınır</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<h3 class="wp-block-heading">Catch Bloğu</h3>



<p><code>catch</code> bloğu, <code>try</code> bloğu içinde oluşan belirli bir exception türünü yakalar ve ele alır. Her <code>try</code> bloğuna birden fazla <code>catch</code> bloğu eşlik edebilir. Her <code>catch</code> bloğu, farklı bir exception türünü ele alır. Bir exception oluştuğunda, Java Virtual Machine (JVM) uygun <code>catch</code> bloğunu arar ve çalıştırır. Eğer uygun bir <code>catch</code> bloğu bulunamazsa, exception yukarıya doğru (çağıran metoda) iletilir.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Java</span><span role="button" tabindex="0" data-code="
try {
    // Hata oluşma potansiyeli olan kod
    int result = 10 / 0;
} catch (ArithmeticException e) {
    // ArithmeticException ele alınır
    System.err.println(&quot;Hata: Sıfıra bölme hatası!&quot;);
    e.printStackTrace(); // Hata izini yazdırır
} catch (Exception e) {
    // Diğer exception'lar ele alınır
    System.err.println(&quot;Bilinmeyen bir hata oluştu!&quot;);
    e.printStackTrace();
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color: #C586C0">try</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Hata oluşma potansiyeli olan kod</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4EC9B0">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">result</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4"> / </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">} </span><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">ArithmeticException</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// ArithmeticException ele alınır</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">err</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">println</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Hata: Sıfıra bölme hatası!&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">printStackTrace</span><span style="color: #D4D4D4">(); </span><span style="color: #6A9955">// Hata izini yazdırır</span></span>
<span class="line"><span style="color: #D4D4D4">} </span><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">Exception</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Diğer exception&#39;lar ele alınır</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">err</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">println</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Bilinmeyen bir hata oluştu!&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">printStackTrace</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<h3 class="wp-block-heading">Finally Bloğu</h3>



<p><code>finally</code> bloğu, <code>try</code> bloğundan sonra (<code>catch</code> bloklarından sonra) çalıştırılır. <code>finally</code> bloğu, <code>try</code> bloğu içinde bir exception oluşsa da oluşmasa da *her zaman* çalışır. Bu blok, kaynakları serbest bırakmak (örneğin, dosyaları kapatmak, veritabanı bağlantılarını sonlandırmak) gibi temizleme işlemlerini gerçekleştirmek için kullanılır. <code>finally</code> bloğu, programın hatasız çalışmasını sağlamak için kritik öneme sahiptir.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Java</span><span role="button" tabindex="0" data-code="
import java.io.*;

public class FinallyExample {
    public static void main(String[] args) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(&quot;example.txt&quot;));
            String line = reader.readLine();
            System.out.println(line);
        } catch (IOException e) {
            System.err.println(&quot;Dosya okuma hatası!&quot;);
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close(); // Dosya kapatılır
                }
            } catch (IOException e) {
                System.err.println(&quot;Dosya kapatma hatası!&quot;);
                e.printStackTrace();
            }
        }
    }
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color: #569CD6">import</span><span style="color: #D4D4D4"> java.io.*;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">FinallyExample</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">static</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">main</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">String</span><span style="color: #D4D4D4">[] </span><span style="color: #9CDCFE">args</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #4EC9B0">BufferedReader</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">reader</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">try</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">            reader = </span><span style="color: #C586C0">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">BufferedReader</span><span style="color: #D4D4D4">(</span><span style="color: #C586C0">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">FileReader</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;example.txt&quot;</span><span style="color: #D4D4D4">));</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #4EC9B0">String</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">line</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">reader</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">readLine</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">out</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">println</span><span style="color: #D4D4D4">(line);</span></span>
<span class="line"><span style="color: #D4D4D4">        } </span><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">IOException</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">err</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">println</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Dosya okuma hatası!&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">printStackTrace</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">        } </span><span style="color: #C586C0">finally</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #C586C0">try</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (reader != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">                    </span><span style="color: #9CDCFE">reader</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">close</span><span style="color: #D4D4D4">(); </span><span style="color: #6A9955">// Dosya kapatılır</span></span>
<span class="line"><span style="color: #D4D4D4">                }</span></span>
<span class="line"><span style="color: #D4D4D4">            } </span><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">IOException</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">err</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">println</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Dosya kapatma hatası!&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">printStackTrace</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">            }</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<h2 class="wp-block-heading">Checked ve Unchecked Exception&#8217;lar</h2>



<p>Java&#8217;da exception&#8217;lar iki ana kategoriye ayrılır:</p>



<ul class="wp-block-list">
<li><strong>Checked Exception (Derleme Zamanı Exception&#8217;ları):</strong> Derleme zamanında kontrol edilen exception&#8217;lardır. Bu exception&#8217;lar, metodun <code>throws</code> anahtar kelimesiyle belirtilmesi veya <code>try-catch</code> blokları ile ele alınması gerekir. <code>IOException</code>, <code>SQLException</code> gibi exception&#8217;lar checked exception&#8217;lardır.</li>



<li><strong>Unchecked Exception (Çalışma Zamanı Exception&#8217;ları):</strong> Derleme zamanında kontrol edilmeyen exception&#8217;lardır. Bu exception&#8217;lar, genellikle programlama hatalarından kaynaklanır ve <code>RuntimeException</code> sınıfından türetilirler. <code>ArithmeticException</code>, <code>NullPointerException</code>, <code>ArrayIndexOutOfBoundsException</code> gibi exception&#8217;lar unchecked exception&#8217;lardır.</li>
</ul>



<h2 class="wp-block-heading">Exception Fırlatma (Throwing Exceptions)</h2>



<p>Java&#8217;da, kendi özel exception&#8217;larınızı oluşturabilir ve bunları <code>throw</code> anahtar kelimesini kullanarak fırlatabilirsiniz. Bu, belirli bir durumda bir hata olduğunu belirtmek ve hatayı ele almak için kullanılır.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Java</span><span role="button" tabindex="0" data-code="
public class ThrowExample {
    public static void main(String[] args) {
        try {
            validateAge(15);
        } catch (IllegalArgumentException e) {
            System.err.println(e.getMessage());
        }
    }

    public static void validateAge(int age) {
        if (age &lt; 18) {
            throw new IllegalArgumentException(&quot;Yaş 18'den küçük olamaz!&quot;);
        }
        System.out.println(&quot;Yaş geçerli.&quot;);
    }
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">ThrowExample</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">static</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">main</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">String</span><span style="color: #D4D4D4">[] </span><span style="color: #9CDCFE">args</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">try</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #DCDCAA">validateAge</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">15</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">        } </span><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">IllegalArgumentException</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">err</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">println</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">getMessage</span><span style="color: #D4D4D4">());</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">static</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">validateAge</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">age</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (age &lt; </span><span style="color: #B5CEA8">18</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #C586C0">throw</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">IllegalArgumentException</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Yaş 18&#39;den küçük olamaz!&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">out</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">println</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Yaş geçerli.&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<h2 class="wp-block-heading">Özel Exception Sınıfları Oluşturma</h2>



<p>Uygulamanız için özel exception sınıfları oluşturmak, hataları daha anlamlı bir şekilde temsil etmenizi ve ele almanızı sağlar. Özel exception sınıfları, <code>Exception</code> sınıfından türetilir.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Java</span><span role="button" tabindex="0" data-code="
class MyCustomException extends Exception {
    public MyCustomException(String message) {
        super(message);
    }
}

public class CustomExceptionExample {
    public static void main(String[] args) {
        try {
            throw new MyCustomException(&quot;Bu özel bir exception!&quot;);
        } catch (MyCustomException e) {
            System.err.println(e.getMessage());
        }
    }
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">MyCustomException</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">extends</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Exception</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">MyCustomException</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">String</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">message</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">super</span><span style="color: #D4D4D4">(message);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">CustomExceptionExample</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">static</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">main</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">String</span><span style="color: #D4D4D4">[] </span><span style="color: #9CDCFE">args</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">try</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #C586C0">throw</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">MyCustomException</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Bu özel bir exception!&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">        } </span><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (</span><span style="color: #4EC9B0">MyCustomException</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">err</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">println</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">getMessage</span><span style="color: #D4D4D4">());</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<h2 class="wp-block-heading">Sonuç</h2>



<p>Exception Handling, Java&#8217;da sağlam ve hatasız uygulamalar geliştirmek için temel bir kavramdır. <code>try-catch-finally</code> bloklarını kullanarak, hataları güvenli bir şekilde ele alabilir, programın çökmesini önleyebilir ve kullanıcıya anlamlı geri bildirim sağlayabilirsiniz. Checked ve unchecked exception&#8217;lar arasındaki farkı anlamak, doğru hata yönetimi stratejileri geliştirmenize yardımcı olur. Ayrıca, özel exception sınıfları oluşturarak uygulamanızdaki hataları daha iyi temsil edebilir ve ele alabilirsiniz. Exception Handling&#8217;i doğru bir şekilde kullanarak, daha güvenilir ve kullanıcı dostu Java uygulamaları geliştirebilirsiniz.</p>
<p><a href="https://www.kesifruhu.com/yazilim/13-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/">13.Hata Yakalama (Exception Handling) ve Try-Catch-Finally Blokları</a> yazısı ilk önce <a href="https://www.kesifruhu.com">Keşif Ruhu</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.kesifruhu.com/yazilim/13-hata-yakalama-exception-handling-ve-try-catch-finally-bloklari/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
