Altbilgi içeriğine atla
.NET YARDıM

C# Çoklu İstisna Yakalama (Geliştiriciler için Nasıl Çalışır)

İstisna işleme C#'da doğru bir şekilde ele almak esastır. Bu öğreticide, birden fazla catch yan tümcesi ile bir try-catch bloğu nasıl kullanılır gösterilir. Birden fazla istisna türünü nasıl yakalayacağımızı, istisna filtrelerini nasıl kullanacağımızı ve final ile kaynakların temizlendiğinden nasıl emin olacağımızı ele alacağız. Amaç, sağlam ve hata tolere edici C# uygulamaları oluşturmanıza yardımcı olmaktır.

Çoklu türde istisnaları yakalamayı öğrenerek, belirli sorunlara yönelik tepkileri özelleştirebilir, programınızın güvenilirliğini artırabilirsiniz. Bloklarına daha kesin hata yönetimine izin veren when anahtar kelimesi ile koşulları uygulama konusuna da değineceğiz.

Bu kılavuz, istisnaları yakalamak ve kodlama projelerinizde hem yaygın hem de karmaşık hataları sorunsuz bir şekilde ele almak için yöntemler sağlayacaktır. İstisna işleme bağlamında IronPDF'i de keşfedeceğiz.

İstisna İşleme Nedir?

C#'da istisna yönetimi, çalışma zamanı hatalarını yönetmek, bir programın ani sonlanmasını önlemek ve bir programın yürütülmesi sırasında meydana gelen beklenmedik durumları yönetmek için kullanılan bir yöntemdir. İstisna yönetiminin çekirdek bileşenleri try, catch ve finally bloklarını içerir.

C#'da Try-Catch'ın Temel Yapısı

Try bloğu, potansiyel olarak bir istisna tetikleyebilecek kodu içerir, oysa catch bloğu, istisna meydana geldiğinde onu yönetmekten sorumludur. finally bloğu opsiyoneldir ve bir istisna fırlatılmış olsa da olmasa da catch bloklarından sonra kodu çalıştırır. İşte basit bir yapı:

try
{
    // Code that may throw an exception
}
catch (Exception e)
{
    // Code to handle the exception
}
finally
{
    // Code that executes after try and catch, regardless of an exception
}
try
{
    // Code that may throw an exception
}
catch (Exception e)
{
    // Code to handle the exception
}
finally
{
    // Code that executes after try and catch, regardless of an exception
}
Try
	' Code that may throw an exception
Catch e As Exception
	' Code to handle the exception
Finally
	' Code that executes after try and catch, regardless of an exception
End Try
$vbLabelText   $csharpLabel

Birden Fazla İstisna Yakalama

Gerçek dünya uygulamalarında, tek bir işlemin çeşitli türlerde istisnalar fırlatması mümkündür. Bununla başa çıkmak için, C#, tek bir try bloğu için birden fazla catch bloğu tanımlamanıza olanak sağlar. Her catch bloğu, tüm istisnaları ele almak için farklı bir istisna türü belirtebilir.

Neden Birden Fazla İstisna Yakalanır?

Birden fazla istisna yakalamak, meydana gelen spesifik hataya bağlı olarak eylemlerin belirlendiği detaylı hata yönetimi için gereklidir. Bu, geliştiricilerin her istisnayı o spesifik hatanın bağlamına uygun bir şekilde ele almalarını sağlar.

Birden Fazla Catch Bloğu Nasıl Uygulanır?

Birden fazla istisna türünü yakalamak için nasıl tek bir catch bloğu uygulanacağına dair bir örnek:

try
{
    // Code that may throw multiple types of exceptions
    int[] numbers = { 1, 2, 3 };
    Console.WriteLine(numbers[5]); // This will throw an IndexOutOfRangeException
}
catch (IndexOutOfRangeException ex)
{
    Console.WriteLine("An index was out of range: " + ex.Message);
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Can't divide by Zero: " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("Error: " + ex.Message);
}
try
{
    // Code that may throw multiple types of exceptions
    int[] numbers = { 1, 2, 3 };
    Console.WriteLine(numbers[5]); // This will throw an IndexOutOfRangeException
}
catch (IndexOutOfRangeException ex)
{
    Console.WriteLine("An index was out of range: " + ex.Message);
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Can't divide by Zero: " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("Error: " + ex.Message);
}
Try
	' Code that may throw multiple types of exceptions
	Dim numbers() As Integer = { 1, 2, 3 }
	Console.WriteLine(numbers(5)) ' This will throw an IndexOutOfRangeException
Catch ex As IndexOutOfRangeException
	Console.WriteLine("An index was out of range: " & ex.Message)
Catch ex As DivideByZeroException
	Console.WriteLine("Can't divide by Zero: " & ex.Message)
Catch ex As Exception
	Console.WriteLine("Error: " & ex.Message)
End Try
$vbLabelText   $csharpLabel

Bu kodda, IndexOutOfRangeException ve DivideByZeroException gibi belirli istisnalar kendi catch blokları tarafından yakalanır. Diğer tipteki istisnalar, genel Exception yakalama bloğu tarafından yakalanır.

When Anahtarı ile İstisna Filtrelerini Kullanma

C#, catch bloğu içinde bir koşul belirtmenize izin veren istisna filtrelerini de destekler. Bu özellik, çalışma zamanında değerlendirilen koşula dayalı olarak hangi istisnaları yakalayacağınıza daha fazla kontrol sağlamak için when anahtar kelimesini kullanır.

İstisna filtreleri eklemek için when anahtar kelimesini nasıl kullanabileceğiniz burada:

try
{
    // Code that may throw an exception
    throw new InvalidOperationException("Invalid operation occurred", new Exception("Inner exception"));
}
catch (Exception ex) when (ex.InnerException != null)
{
    Console.WriteLine("Exception with inner exception caught: " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("Exception caught: " + ex.Message);
}
try
{
    // Code that may throw an exception
    throw new InvalidOperationException("Invalid operation occurred", new Exception("Inner exception"));
}
catch (Exception ex) when (ex.InnerException != null)
{
    Console.WriteLine("Exception with inner exception caught: " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("Exception caught: " + ex.Message);
}
Try
	' Code that may throw an exception
	Throw New InvalidOperationException("Invalid operation occurred", New Exception("Inner exception"))
Catch ex As Exception When ex.InnerException IsNot Nothing
	Console.WriteLine("Exception with inner exception caught: " & ex.Message)
Catch ex As Exception
	Console.WriteLine("Exception caught: " & ex.Message)
End Try
$vbLabelText   $csharpLabel

Finally Bloğunun Rolü

finally bloğu, try ve herhangi bir catch blokları tamamlandıktan sonra kodu çalıştırmak için kullanılır. Bir istisna meydana gelip gelmediğine bakılmaksızın kaynakları temizlemek, dosya akışlarını kapatmak veya veri tabanı bağlantılarını yönetmek gibi işlemler için kullanışlıdır.

try
{
    // Code that might throw an exception
}
catch (Exception e)
{
    // Handle the exception
}
finally
{
    // Cleanup code, executed after try/catch
    Console.WriteLine("Cleanup code runs here.");
}
try
{
    // Code that might throw an exception
}
catch (Exception e)
{
    // Handle the exception
}
finally
{
    // Cleanup code, executed after try/catch
    Console.WriteLine("Cleanup code runs here.");
}
Try
	' Code that might throw an exception
Catch e As Exception
	' Handle the exception
Finally
	' Cleanup code, executed after try/catch
	Console.WriteLine("Cleanup code runs here.")
End Try
$vbLabelText   $csharpLabel

IronPDF'nin Tanıtımı

IronPDF, .NET uygulamaları içinde çalışan C# geliştiricileri için tasarlanmış kapsamlı bir kütüphanedir. Geliştiricilerin, doğrudan HTML'den PDF dosyaları oluşturmasını, yazmasını ve yönetmesini sağlar. Çalışmak için harici bir bağımlılık gerektirmez.

Herhangi bir PDF işlemini Adobe Acrobat kullanmadan ve kurmadan gerçekleştirebilirsiniz. IronPDF, PDF belgelerini düzenleme, birleştirme, bölme ve şifreleme ve dijital imzalarla güvence altına alma gibi çeşitli PDF işlevlerini destekler. Geliştiriciler, web uygulamaları, masaüstü uygulamaları ve servisler dahil olmak üzere çeşitli uygulama türlerinde IronPDF'dan yararlanabilir.

Bağlantı:

IronPDF'un ana özelliği HTML'yi PDF'ye dönüştürmek olup, hem yerleşimi hem de stili korur. Raporlar, faturalar veya dokümanlar için web içeriğinden PDF üretmek için mükemmeldir. HTML dosyaları, URL'ler ve HTML dizeleri PDF dosyalarına dönüştürülebilir.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Kod Örneği

İşte IronPDF kullanarak HTML ile PDF oluşturmak için hata yönetimi olan birden fazla istisna türü için basit bir C# örneği. Bu örnek, projenizde IronPDF'un kurulu olduğunu varsayar. IronPDF'u kurmak için NuGet konsolunda bu komutu çalıştırın:

Install-Package IronPdf

Kod burada:

using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Set your IronPDF license key, if applicable.
        License.LicenseKey = "License-Key";
        var renderer = new ChromePdfRenderer();

        try
        {
            // Convert HTML to PDF
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
            pdf.SaveAs("Exceptions.pdf");
            Console.WriteLine("PDF successfully created.");
        }
        catch (IronPdf.Exceptions.IronPdfProductException ex)
        {
            // Handle PDF generation errors
            Console.WriteLine("Failed to generate PDF: " + ex.Message);
        }
        catch (System.IO.IOException ex)
        {
            // Handle IO errors (e.g., disk I/O errors)
            Console.WriteLine("IO Exception: " + ex.Message);
        }
        catch (Exception ex)
        {
            // Handle other errors
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}
using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Set your IronPDF license key, if applicable.
        License.LicenseKey = "License-Key";
        var renderer = new ChromePdfRenderer();

        try
        {
            // Convert HTML to PDF
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
            pdf.SaveAs("Exceptions.pdf");
            Console.WriteLine("PDF successfully created.");
        }
        catch (IronPdf.Exceptions.IronPdfProductException ex)
        {
            // Handle PDF generation errors
            Console.WriteLine("Failed to generate PDF: " + ex.Message);
        }
        catch (System.IO.IOException ex)
        {
            // Handle IO errors (e.g., disk I/O errors)
            Console.WriteLine("IO Exception: " + ex.Message);
        }
        catch (Exception ex)
        {
            // Handle other errors
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Set your IronPDF license key, if applicable.
		License.LicenseKey = "License-Key"
		Dim renderer = New ChromePdfRenderer()

		Try
			' Convert HTML to PDF
			Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>")
			pdf.SaveAs("Exceptions.pdf")
			Console.WriteLine("PDF successfully created.")
		Catch ex As IronPdf.Exceptions.IronPdfProductException
			' Handle PDF generation errors
			Console.WriteLine("Failed to generate PDF: " & ex.Message)
		Catch ex As System.IO.IOException
			' Handle IO errors (e.g., disk I/O errors)
			Console.WriteLine("IO Exception: " & ex.Message)
		Catch ex As Exception
			' Handle other errors
			Console.WriteLine("Error: " & ex.Message)
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

Bu kodu çalıştırdığımızda komut satırında bu mesaj görüntülenir.

C# Birden Fazla İstisna Yakalama (Geliştiriciler İçin Nasıl Çalışır): Şekil 1

Ve bu kod tarafından oluşturulan PDF dosyası:

C# Birden Fazla İstisna Yakalama (Geliştiriciler İçin Nasıl Çalışır): Şekil 2

IronPDF'un doğru yapılandırıldığı bir ortamda bunu test etmeye dikkat edin ve uygulamanız için gerektiği şekilde HTML içeriğini değiştirin. Bu, hata yönetimini verimli bir şekilde kontrol etmenize yardımcı olur, PDF üretim görevlerinizin güvenilirliğini arttırır.

Sonuç

C# Birden Fazla İstisna Yakalama (Geliştiriciler İçin Nasıl Çalışır): Şekil 3

C#'da birden fazla istisnayı ele almak, uygulamalarınızda sağlam hata yönetimi yeteneklerini sağlayan güçlü bir özelliktir. Birden fazla catch bloğu, istisna filtreleri ve finally bloğu kullanarak, çeşitli hata koşulları altında farklı hataları nazikçe yöneten ve bütünlüğünü koruyan dayanıklı ve sabit bir uygulama oluşturabilirsiniz.

Birden fazla istisna yönetiminin bu kapsamlı anlayışı ve uygulanması, uygulamalarınızın beklenmedik durumlarla etkili bir şekilde başa çıkmaya iyi hazırlanmasını sağlar. IronPDF $799 ile başlayan bir ücretsiz deneme sunar.

Sıkça Sorulan Sorular

C#'da istisnaları ele almak için bazı ileri teknikler nelerdir?

C#'da istisnaları ele almak için ileri teknikler, farklı istisna türlerini ele almak için birden çok catch bloğu kullanmayı, when anahtarı ile istisna filtreleri uygulamayı ve kaynakların temizlenmesini sağlamak için finally bloğunu uygulamayı içerir. Bu teknikler, sağlam ve hata toleranslı uygulamalar oluşturmanıza yardımcı olur.

C# uygulamasında birden çok istisna nasıl ele alınabilir?

C# uygulamasında birden çok istisna, birden çok catch bloğu kullanılarak ele alınabilir. Her catch bloğu, belirli bir istisna türünü ele almak için tasarlanmıştır ve çeşitli hata senaryolarına özel tepkiler verir.

İstisna filtreleri nedir ve nasıl çalışır?

İstisna filtreleri, catch bloğunda when anahtarı kullanılarak belirlenen koşullardır. Geliştiricilerin belirli çalışma zamanı koşullarına dayalı olarak istisnaları yakalamasına olanak tanır, hata yönetimi üzerinde daha hassas kontrol sağlar.

IronPDF, PDF oluşturma sırasında istisnaların yönetilmesine nasıl yardımcı olur?

IronPDF, PDF oluşturma sürecinde yaşanabilecek hataları yönetmek için try-catch blokları kullanarak C# projelerine entegre edilebilir. Bu entegrasyon, uygulamalarda hata toleranslı işlemlerin sağlanmasına yardımcı olur.

C#'da bir finally bloğu ile kaynakların yönetimi neden önemlidir?

finally bloğu, dosya akışları veya veritabanı bağlantıları gibi kaynakların yönetimi için kritik öneme sahiptir çünkü bir istisna fırlatılsa da fırlatılmasa da, try ve catch bloklarından sonra kodu çalıştırır. Kaynakların düzgün serbest bırakılmasını ve temizlenmesini garanti eder.

C# kütüphaneleri, üçüncü taraf uygulamalara gerek kalmadan PDF oluşturmak için kullanılabilir mi?

Evet, IronPDF gibi kütüphaneler, Adobe Acrobat gibi üçüncü taraf uygulamalara gerek kalmadan doğrudan C# uygulamalarında PDF oluşturulmasına olanak tanır. Bu kütüphaneler, PDF belgelerini dönüştürme, düzenleme ve yönetme işlevselliği sağlar.

Hata yönetiminde birden çok catch bloğu kullanmanın anlamı nedir?

Hata yönetiminde birden çok catch bloklarının kullanılması, geliştiricilerin farklı türdeki istisnaları benzersiz bir şekilde ele almasına olanak tanır, böylece hata tepkilerinin özgüllüğünü ve etkinliğini artırır ve uygulamayı çeşitli hata koşullarına karşı daha dayanıklı hale getirir.

Geliştiriciler, C# projelerinin güvenilirliğini nasıl artırabilir?

Geliştiriciler, C# projelerinin güvenilirliğini artırmak için kapsamlı istisna yönetim stratejileri uygulayabilirler. Özellikle PDF oluşturma gibi karmaşık görevlerle uğraşırken, birden çok catch bloğu, istisna filtreleri ve finally blokları kullanarak projelerini geliştirebilirler.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara