
C# Catch Multiple Exceptions(開発者向けの動作方法)
例外処理を適切に行うことはC#で不可欠です。 このチュートリアルでは、複数のキャッチ句を持つtry-catchブロックの使用方法を紹介します。 複数の例外タイプをキャッチする方法、例外フィルターを使用する方法、最後にリソースを確実にクリーンアップする方法を説明します。 目標は、堅牢でエラートレラントなC#アプリケーションを構築する手助けをすることです。
複数の種類の例外をキャッチすることを学ぶことで、特定の問題に応じた応答を行い、プログラムの信頼性を向上させることができます。 また、より正確なエラーハンドリングを可能にするwhenキーワードを使用して、キャッチブロックに条件を適用する方法にも触れます。
このガイドは、例外をキャッチし、一般的なエラーや複雑なエラーをスムーズに処理するための方法を提供します。 例外処理の文脈でIronPDFを探ります。
例外処理とは何ですか?
C#における例外処理は、ランタイムエラーを処理し、プログラムの突然の終了を防ぎ、プログラム実行中に発生する予期しない状況を管理するために使用される方法です。 例外処理の中核的なコンポーネントには、finallyブロックが含まれます。
Basic Structure of Try-Catch in C#
tryブロックには、例外を引き起こす可能性のあるコードが含まれており、catchブロックは例外が発生した場合にそれを管理する責任があります。 catchブロックの後にコードを実行します。 ここに簡単な構造があります:
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複数の例外をキャッチする
実際のアプリケーションでは、単一の操作でさまざまな種類の例外が発生する可能性があります。これに対処するために、C#では、単一のcatchブロックを定義できます。 それぞれのキャッチブロックは、すべての例外を処理するための異なる例外タイプを指定することができます。
なぜ複数の例外をキャッチするのですか?
複数の例外をキャッチすることは、発生した特定のエラーに応じたアクションを行う、詳細なエラー処理にとって重要です。 これは、開発者がその特定のエラーの文脈に適した方法で各例外を処理できるようにします。
複数のキャッチブロックを実装する方法
複数の例外タイプをキャッチするための単一のキャッチブロックを実装する例があります:
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このコードでは、catchブロックによってキャッチされます。 その他の種類の例外は、汎用的なExceptionキャッチブロックによってキャッチされます。
Whenキーワードを使った例外フィルターの使用
C#はまた、キャッチブロック内で条件を指定できる例外フィルターをサポートしています。 この機能は、実行時に評価される条件に基づいてキャッチする例外をよりコントロールできるようにするwhenキーワードを使用します。
こちらが、例外フィルターを追加するためにwhenキーワードを使用する方法です。
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ブロックの役割
catchブロックが完了した後にコードを実行するために使用されます。 ファイルストリームやデータベース接続を閉じるなど、例外が発生したかどうかに関わらず、リソースをクリーンアップするのに役立ちます。
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 の紹介
IronPDFは、.NETアプリケーションで作業するC#開発者向けに設計された包括的なライブラリです。 これは、開発者がHTMLから直接PDFファイルを操作、管理、作成するのに役立ちます。 動作するために外部依存関係を必要としません。
Adobe Acrobatを使用せずにどんなPDF操作も行うことができます。 IronPDFは編集、結合、分割、暗号化やデジタル署名によるPDF文書のセキュリティなど、さまざまなPDF機能をサポートしています。 開発者は、IronPDFをWebアプリケーション、デスクトップアプリケーション、サービスなど、多様なアプリケーションタイプで利用することができます。
インターリンク:
IronPDFの重要な機能はHTMLをPDFに変換することで、レイアウトとスタイルの両方を保持します。 これは、レポート、請求書、ドキュメントのためにWebコンテンツからPDFを生成するのに最適です。 HTMLファイル、URL、HTML文字列はすべて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コード例
これは、HTMLからPDFを作成するためにIronPDFを使用するシンプルなC#の例で、複数の種類の例外を処理するエラー処理があります。 この例では、プロジェクトにIronPDFをインストールしていることを前提としています。 NuGetコンソールでこのコマンドを実行してIronPDFをインストールします:
こちらがコードです:
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 Moduleこのコードを実行すると、コマンドラインにこのメッセージが表示されます。

そして、これはこのコードによって生成されたPDFファイルです:

IronPDFが適切に設定されている環境でこれをテストし、アプリケーションに必要に応じてHTMLコンテンツを修正してください。 これは、エラーを効率的に管理し、PDF生成タスクの信頼性を向上させるのに役立ちます。
結論
C#での複数の例外の処理は、アプリケーション内で強力なエラーハンドリング機能を提供する強力な機能です。 複数のfinallyブロックを使用することで、異なるエラーを優雅に処理し、さまざまなエラーに対する堅牢で安定したアプリケーションを作成できます。
この包括的な例外処理の理解と実装により、アプリケーションは予期しない状況に効果的に対処する準備が整います。 IronPDFは無料トライアルを提供しており、$999から開始します。

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。
関連する記事


