如何:使用 Try/Catch 块捕捉异常

更新:2007 年 11 月

将可能引发异常的代码节放在 Try 块中,而将处理异常的代码放在 Catch 块中。Catch 块是一系列以关键字 catch 开头的语句,语句后跟异常类型和要执行的操作。

说明:

几乎任何代码行都可能会导致异常,尤其是公共语言运行库本身引发的异常,如 OutOfMemoryExceptionStackOverflowException。大多数应用程序不必处理这些异常,但在编写由其他人使用的库时应知道这种可能性。有关何时在 Try 块中设置代码的建议,请参见处理异常的最佳做法

下面的代码示例使用 Try/Catch 块捕捉可能的异常。Main 方法包含带有 StreamReader 语句的 Try 块,该语句打开名为 data.txt 的数据文件并从该文件写入字符串。Try 块后面是 Catch 块,该块捕捉 Try 块产生的任何异常。

示例

Option Explicit
Option Strict
Imports System
Imports System.IO
Imports System.Security.Permissions
<assembly: FileIOPermissionAttribute(SecurityAction.RequestMinimum, All := "c:\data.txt")>

Public Class ProcessFile
   Public Shared Sub Main()
      Try
         Dim sr As StreamReader = File.OpenText("data.txt")
         Console.WriteLine("The first line of this file is {0}", sr.ReadLine())
      Catch e As Exception
         Console.WriteLine("An error occurred: '{0}'", e)
      End Try
   End Sub
End Class
using System;
using System.IO;
using System.Security.Permissions;
// Security permission request.
[assembly:FileIOPermissionAttribute(SecurityAction.RequestMinimum, All = @"c:\data.txt")]
public class ProcessFile {
    public static void Main() {
        try {
            StreamReader sr = File.OpenText("data.txt");
            Console.WriteLine("The first line of this file is {0}", sr.ReadLine());    
        }
        catch(Exception e) {
            Console.WriteLine("An error occurred: '{0}'", e);
        }
    }
}

此示例阐释捕捉任何异常的基本 Catch 语句。一般而言,好的编程做法是捕捉特定类型的异常而不是使用基本 Catch 语句。有关捕捉特定异常的更多信息,请参见在 Catch 块中使用特定异常

请参见

任务

如何:在 Catch 块中使用特定异常

如何:显式引发异常

如何:创建用户定义的异常

如何:使用 Finally 块

其他资源

异常处理基础知识