
C# Birden Fazla İstisna Yakalama (Geliştiriciler İçin Nasıl Çalışır)
İstisnaları yönetmek C#'da doğru bir şekilde yapmak esastır. Bu eğitim, birden fazla catch deyimi içeren bir try-catch blok nasıl kullanılacağını gösterir. Birden fazla istisna türünü nasıl yakalayacağımızı, istisna filtrelerini nasıl kullanacağımızı ve kaynakların sonunda temizlenmesini nasıl sağlayacağımızı ele alacağız. Amaç, güçlü ve hata toleranslı C# uygulamaları oluşturmanıza yardımcı olmaktır.
Birden fazla türde istisnayı yakalamayı öğrenerek, yanıtlarınızı belirli sorunlara göre ayarlayabilir, programınızın güvenilirliğini artırabilirsiniz. Koşulları when anahtar kelimesiyle catch bloklarına nasıl uygulayacağımıza da değineceğiz ve bu, daha hassas hata yönetimine olanak tanır.
Bu kılavuz, istisnaları yakalama ve kodlama projelerinizde yaygın ve karmaşık hataları sorunsuz bir şekilde yönetme yöntemlerini size sunacaktır. IronPDF'i istisna yönetimi bağlamında da keşfedeceğiz.
İstisna Yönetimi Nedir?
C#'da istisna yönetimi, çalışma zamanı hatalarını yönetmek, bir programın ani durmasını önlemek ve programın çalışması sırasında meydana geldiklerinde beklenmedik durumları yönetmek için kullanılan bir yöntemdir. İstisna yönetiminin ana bileşenleri try, catch ve finally bloklarını içerir.
Basic Structure of Try-Catch in C#
Try bloğu potansiyel olarak bir istisna tetikleyebilecek kodu içerirken, catch bloğu istisna ortaya çıkarsa onu yönetmekten sorumludur. finally bloğu isteğe bağlıdır ve try ve catch bloklarından sonra, bir istisna atılıp atılmadığına bakılmaksızın kodu yürütü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 e As Exception
' Code to handle the exception
Finally
' Code that executes after try and catch, regardless of an exception
End TryBirden Fazla İstisna Yakalamak
Gerçek dünya uygulamalarında, tek bir işlem çeşitli türlerde istisnalar atabilir. Bu sorunu çözmek için C#, tek bir try bloğu için birden çok catch bloğu tanımlamanıza izin verir. Her bir catch bloğu tüm istisnaları yönetmek için farklı bir istisna türü belirtebilir.
Neden Birden Çok İstisna Yakalamalısınız?
Birden çok istisnanın yakalanması, belirli bir hata meydana geldiğinde eylemlerin duruma bağlı olduğu ayrıntılı hata yönetimi için gereklidir. Her iki istisnayı da özel bir bağlam için uygun bir şekilde yönetmek için geliştiricilere olanak sağlar.
Birden Fazla Catch Bloğu Nasıl Uygulanır
Birden fazla istisna türünü tek bir catch bloğunda yakalamak nasıl uygulanır 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
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 TryBu kodda IndexOutOfRangeException ve DivideByZeroException gibi belirli istisnalar, kendi ilgili catch blokları tarafından yakalanır. Diğer tüm istisna türleri, genel Exception catch bloğu tarafından yakalanır.
When Anahtar Kelimesiyle İstisna Filtreleri Kullanma
C# ayrıca catch bloğunda bir koşul belirtmenizi sağlamak için istisna filtrelerini destekler. Bu özellik, çalışma zamanında değerlendirilen koşula bağlı olarak hangi istisnaların yakalanacağı konusunda daha fazla kontrol sağlamak için when anahtar kelimesini kullanır.
İşte istisna filtreleri eklemek için when anahtar kelimesini nasıl kullanabileceğiniz:
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 TryFinally Bloğunun Rolü
finally bloğu, try ve herhangi bir catch blokları tamamlandıktan sonra kodu yürütmek için kullanılır. Bir istisna olup olmadığına bakılmaksızın kaynakları temizlemek için, dosya akışlarını veya veritabanı bağlantılarını kapatma gibi yararlı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 e As Exception
' Handle the exception
Finally
' Cleanup code, executed after try/catch
Console.WriteLine("Cleanup code runs here.")
End TryIronPDF Tanıtımı
IronPDF, .NET uygulamaları içinde çalışan C# geliştiricileri için tasarlanmış kapsamlı bir kütüphanedir. Geliştiricilerin PDF dosyalarını HTML'den doğrudan oluşturmasına yardımcı olur. Çalışması için harici bir bağımlılığa ihtiyaç duymaz.
Adobe Acrobat kullanmadan ve yüklemeden herhangi bir PDF işlemi yapabilirsiniz. IronPDF, düzenleme, birleştirme, bölme ve PDF belgelerini şifreleme ve dijital imzalarla güvence altına alma gibi çeşitli PDF işlevlerini destekler. Geliştiriciler, web uygulamaları, masaüstü uygulamaları ve hizmetler dahil olmak üzere çeşitli uygulama türlerinde IronPDF'i kullanabilir.
Bağlantı:
IronPDF'nin ana özelliği HTML'yi PDF'ye dönüştürme, ki bu da hem düzeneği hem de stili korur. Raporlar, faturalar veya dokümantasyon için olsun web içeriğinden PDF üretimi için mükemmeldir. HTML dosyaları, URL'ler ve HTML dizgeleri, hepsi 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");
}
}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 ClassKod Örneği
IronPDF kullanarak HTML'den PDF oluşturma ve birden fazla istisna türü için hata yönetimi içeren basit bir C# örneği. Bu örnekte, projenizde IronPDF'in yüklü olduğunu varsayarız. IronPDF'i kurmak için NuGet konsolunda bu komutu çalıştırın:
İşte kod:
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
Module Program
Sub Main(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 ModuleBu kodu çalıştırdığımızda, bu mesaj komut satırında gösterilir.

Ve bu kod tarafından üretilen PDF dosyası:

IronPDF'in doğru yapılandırıldığı bir ortamda test ettiğinizden emin olun ve uygulamanız için gereken HTML içeriğini değiştirin. Bu, hata yönetimini verimli bir şekilde yönetmenize yardımcı olacak, PDF oluşturma görevlerinizin güvenilirliğini artıracaktır.
Sonuç
C#'da birden fazla istisna yönetmek, uygulamalarınıza sağlam hata yönetim yetenekleri sağlayan güçlü bir özelliktir. Birden fazla catch bloğu, istisna filtreleri ve finally bloğu kullanarak, farklı hataları zarifçe ele alan ve çeşitli hata koşulları altında bütünlüğünü koruyan dayanıklı ve istikrarlı bir uygulama oluşturabilirsiniz.
Birden fazla istisna yönetiminin bu kapsamlı kavranışı ve uygulanması, uygulamalarınızın beklenmedik durumlarla etkili bir şekilde başa çıkmaya hazır olmasını sağlar. IronPDF, $999 tarihinden başlayarak ücretsiz deneme sunar.

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.
İlgili Makaleler


