<?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>Try-Catch arşivleri - Keşif Ruhu</title>
	<atom:link href="https://www.kesifruhu.com/tag/try-catch/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kesifruhu.com/tag/try-catch/</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>Try-Catch arşivleri - Keşif Ruhu</title>
	<link>https://www.kesifruhu.com/tag/try-catch/</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>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>
