<?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-Except arşivleri - Keşif Ruhu</title>
	<atom:link href="https://www.kesifruhu.com/tag/try-except/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kesifruhu.com/tag/try-except/</link>
	<description>Keşfet, Deneyimle, Paylaş</description>
	<lastBuildDate>Tue, 22 Apr 2025 14:42:14 +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-Except arşivleri - Keşif Ruhu</title>
	<link>https://www.kesifruhu.com/tag/try-except/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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>
	</channel>
</rss>
