在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
如果你是 C# 程式設計的初學者,你可能會經常聽到「try catch」語句這個詞。 在本教程中,我們將深入探討異常處理的世界,專注於 catch 區塊,並探討如何使用 try 和 catch 語句使您的代碼對錯誤更具彈性。 在此過程中,我們將提供大量的實際案例來幫助鞏固您的理解。
在 C# 中,例外表示程序執行期間發生的事件,這種事件干擾了程序指令執行的正常進程。 當發生例外時,程式的流程會被中斷,如果例外沒有被處理,程式將會突然終止。
例外處理是一種預測和管理這些破壞性事件的方法,允許程式從意外問題中恢復並按預期繼續執行。 透過使用 try 和 catch 區塊,您可以確保程式碼優雅地處理錯誤,並向使用者提供有意義的回饋。
try 區塊是一個你預期可能會產生例外的程式碼段。 當您將代碼包裝在 try 區塊中時,您是在告訴編譯器您想要處理該區塊中可能出現的潛在例外。
以下是如何使用 try 區塊的基本範例:
try
{
// Code that may generate an exception
}
catch (Exception ex)
{
// handle the exception
}
try
{
// Code that may generate an exception
}
catch (Exception ex)
{
// handle the exception
}
Try
' Code that may generate an exception
Catch ex As Exception
' handle the exception
End Try
catch 陳述是與 try 區塊結合使用來處理例外情況的。 當在 try 區塊中發生例外時,程式執行會跳轉到適當的 catch 區塊,在那裡可以指定程式應如何回應該例外。
要捕捉異常,您需要在 try 區塊之後立即建立一個 catch 區塊。 一個 catch 區塊通常包含一個參數,用來表示捕獲的例外。
以下是一個 catch 陳述式的範例:
try
{
int result = 10/0;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
try
{
int result = 10/0;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
Try
Dim result As Integer = 10\0
Catch ex As DivideByZeroException
Console.WriteLine("An error occurred: " & ex.Message)
End Try
在此範例中,try
區塊中的程式碼嘗試除以零,這將產生 DivideByZeroException
。 捕獲區塊接著處理異常,向使用者顯示一條訊息。
有時候,您的 try 區塊可能會產生不同類型的可能異常。 在這種情況下,您可以使用多個 catch 區塊來分別處理每種類型的例外。
以下範例展示了多個 catch 區塊的使用:
try
{
int [] numbers = new int [7];
numbers [12] = 70;
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("An index out of range error occurred: " + ex.Message);
}
catch (Exception e)
{
Console.WriteLine("An unexpected error occurred: " + e.Message);
}
try
{
int [] numbers = new int [7];
numbers [12] = 70;
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("An index out of range error occurred: " + ex.Message);
}
catch (Exception e)
{
Console.WriteLine("An unexpected error occurred: " + e.Message);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
在此示例中,try 區塊中的程式碼嘗試將一個值指定給不存在的數組索引,從而產生 IndexOutOfRangeException
。 第一個 catch 區塊處理此特定例外,而第二個 catch 區塊則捕捉可能發生的任何其他例外。
請記得,在使用多個 catch 區塊時,應始終按從最具體到最一般的異常類型排序。
例外過濾器允許您向捕捉區塊添加條件,從而只有在滿足某個條件時才捕捉例外。 若要使用例外篩選器,請在 catch 語句中加入 when
關鍵字及條件。
以下範例演示了異常篩選器的用法:
try
{
int result = 10 / 0;
}
catch (DivideByZeroException ex) when (ex.Message.Contains("divide"))
{
Console.WriteLine("An error occurred: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("A different divide by zero error occurred: " + ex.Message);
}
try
{
int result = 10 / 0;
}
catch (DivideByZeroException ex) when (ex.Message.Contains("divide"))
{
Console.WriteLine("An error occurred: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("A different divide by zero error occurred: " + ex.Message);
}
Try
Dim result As Integer = 10 \ 0
Catch ex As DivideByZeroException When ex.Message.Contains("divide")
Console.WriteLine("An error occurred: " & ex.Message)
Catch ex As DivideByZeroException
Console.WriteLine("A different divide by zero error occurred: " & ex.Message)
End Try
在上述範例中,第一個 catch 區塊將僅在例外訊息包含“divide”一詞時處理 DivideByZeroException
。 如果條件不滿足,第二個 catch 區塊將處理例外。
在某些情況下,您可能會希望確保執行特定的程式碼,即使發生異常也是如此。 要達到這個目的,你可以使用一個 finally
區塊。
在 try 和 catch 區塊之後放置一個 finally
區塊,無論是否發生例外情況,它都會被執行。
這是一個展示 finally
區塊用法的範例:
try
{
int result = 10 / 2;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
finally
{
Console.WriteLine("This line will always be executed.");
}
try
{
int result = 10 / 2;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
finally
{
Console.WriteLine("This line will always be executed.");
}
Try
Dim result As Integer = 10 \ 2
Catch ex As DivideByZeroException
Console.WriteLine("An error occurred: " & ex.Message)
Finally
Console.WriteLine("This line will always be executed.")
End Try
在上面的例子中,即使 try
區塊中的代碼沒有生成異常, finally
區塊仍然會被執行。
有時候,您可能會希望創建自己的自定義異常來處理程式碼中的特定異常。 要做到這一點,您可以創建一個繼承自 Exception
類的新類別。
這是一個創建自定義異常的示例:
public class CustomException : Exception
{
public CustomException(string errorMessage) : base(errorMessage)
{
}
}
public class CustomException : Exception
{
public CustomException(string errorMessage) : base(errorMessage)
{
}
}
Public Class CustomException
Inherits Exception
Public Sub New(ByVal errorMessage As String)
MyBase.New(errorMessage)
End Sub
End Class
現在,您可以在 try 和 catch 區塊中使用此自定義異常,如下所示:
try
{
throw new CustomException("This is a custom exception.");
}
catch (CustomException ex)
{
Console.WriteLine("A custom exception occurred: " + ex.Message);
}
try
{
throw new CustomException("This is a custom exception.");
}
catch (CustomException ex)
{
Console.WriteLine("A custom exception occurred: " + ex.Message);
}
Try
Throw New CustomException("This is a custom exception.")
Catch ex As CustomException
Console.WriteLine("A custom exception occurred: " & ex.Message)
End Try
在此範例中,try 區塊拋出一個 CustomException
實例,之後被 catch 區塊捕捉並處理。
了解更多關於 IronPDF是一個受歡迎的庫,用於在 C# 中創建、編輯和提取 PDF 文件的內容。 在本節中,我們將探討如何將 IronPDF 與您的 try-catch 異常處理方法相結合,以優雅地處理潛在錯誤。
首先,您需要安裝 IronPDF NuGet 套件。 您可以使用套件管理器控制台來完成這項操作:
Install-Package IronPdf
或者,您可以在 Visual Studio 的「管理 NuGet 套件」對話框中搜索「IronPDF」。
假設您想要使用 IronPDF 從 HTML 字串創建 PDF 檔案. 由於創建 PDF 的過程中可能會引發異常,您可以使用 try-catch
區塊來處理它們。 以下是如何使用 IronPDF 創建 PDF 並使用 try-catch
處理異常的示例:
using IronPdf;
using System;
try
{
var renderer = new IronPDF.ChromePdfRenderer();
string html = "Hello, World!";
PdfDocument PDF = renderer.RenderHtmlAsPdf(html);
PDF.SaveAs("output.PDF");
Console.WriteLine("PDF created successfully.");
}
catch (Exception ex)
{
Console.WriteLine("An unexpected error occurred: " + ex.Message);
}
using IronPdf;
using System;
try
{
var renderer = new IronPDF.ChromePdfRenderer();
string html = "Hello, World!";
PdfDocument PDF = renderer.RenderHtmlAsPdf(html);
PDF.SaveAs("output.PDF");
Console.WriteLine("PDF created successfully.");
}
catch (Exception ex)
{
Console.WriteLine("An unexpected error occurred: " + ex.Message);
}
Imports IronPdf
Imports System
Try
Dim renderer = New IronPDF.ChromePdfRenderer()
Dim html As String = "Hello, World!"
Dim PDF As PdfDocument = renderer.RenderHtmlAsPdf(html)
PDF.SaveAs("output.PDF")
Console.WriteLine("PDF created successfully.")
Catch ex As Exception
Console.WriteLine("An unexpected error occurred: " & ex.Message)
End Try
在此範例中,try 區塊包含使用 IronPDF 建立 PDF 的程式碼。 如果過程中發生例外情況,catch 區塊將處理錯誤,並向使用者顯示相關的錯誤訊息。
您可能還想使用 IronPDF 從 PDF 文件中提取文本。 與前一個例子一樣,您可以使用 try-catch
區塊來處理潛在的例外情況。
以下是一個使用 IronPDF 從 PDF 文件中提取文本並處理異常的示例:
using IronPdf;
using System;
using System.IO;
try
{
string pdfPath = "input.PDF";
if (File.Exists(pdfPath))
{
PdfDocument PDF = PdfDocument.FromFile(pdfPath);
string extractedText = PDF.ExtractAllText();
Console.WriteLine("Text extracted successfully: " + extractedText);
}
else
{
Console.WriteLine("The specified PDF file does not exist.");
}
}
catch (Exception ex)
{
Console.WriteLine("An unexpected error occurred: " + ex.Message);
}
using IronPdf;
using System;
using System.IO;
try
{
string pdfPath = "input.PDF";
if (File.Exists(pdfPath))
{
PdfDocument PDF = PdfDocument.FromFile(pdfPath);
string extractedText = PDF.ExtractAllText();
Console.WriteLine("Text extracted successfully: " + extractedText);
}
else
{
Console.WriteLine("The specified PDF file does not exist.");
}
}
catch (Exception ex)
{
Console.WriteLine("An unexpected error occurred: " + ex.Message);
}
Imports IronPdf
Imports System
Imports System.IO
Try
Dim pdfPath As String = "input.PDF"
If File.Exists(pdfPath) Then
Dim PDF As PdfDocument = PdfDocument.FromFile(pdfPath)
Dim extractedText As String = PDF.ExtractAllText()
Console.WriteLine("Text extracted successfully: " & extractedText)
Else
Console.WriteLine("The specified PDF file does not exist.")
End If
Catch ex As Exception
Console.WriteLine("An unexpected error occurred: " & ex.Message)
End Try
在此範例中,try 區塊包含使用 IronPDF 從 PDF 提取文本的程式碼。 如果在過程中發生例外情況,catch 區塊將處理錯誤,向使用者顯示相關信息。
通過結合IronPDF通過您的 try-catch 例外處理方法,您可以創建穩健的應用程序,在處理 PDF 文件時優雅地處理錯誤。 這不僅提高了應用程式的穩定性,還增強了整體使用者體驗。
記得在使用像 IronPDF 這樣的外部庫時,務必考慮潛在的例外情況,並使用 try 和 catch 語句適當地處理它們。 這樣,您可以確保您的應用程式具有彈性並且對使用者友好,即使在處理意外問題時也是如此。
IronPDF 提供一個其庫的免費試用版,讓您在不需承諾的情況下探索其功能。 如果您決定在試用期後繼續使用IronPDF,授權價格從 $749 開始。