다음을 통해 공유


방법: Try/Catch 블록을 사용하여 예외 catch

업데이트: 2007년 11월

try 블록에 예외를 throw하는 코드를 작성하고 catch 블록에 예외를 처리하는 코드를 작성합니다. catch 블록은 catch 키워드로 시작하는 문과, 예외 유형 및 실행될 동작으로 구성됩니다.

참고:

거의 대부분의 코드 줄에서 예외가 발생할 수 있습니다. 특히 공용 언어 런타임 자체에서 throw하는 예외 즉, OutOfMemoryExceptionStackOverflowException과 같은 예외가 발생할 수 있습니다. 대부분의 응용 프로그램에서는 이러한 예외를 처리할 필요가 없지만 다른 사용자들이 사용할 라이브러리를 작성할 때에는 이러한 예외의 발생 가능성에 대해 알고 있어야 합니다. try 블록에서의 코드 설정 시기 제안에 대한 내용은 최선의 예외 처리 구현 방법을 참조하십시오.

다음 코드 예제에서는 try/catch 블록을 사용하여, 발생 가능한 예외를 catch합니다. Main 메서드에는 data.txt라는 데이터 파일을 열어 이 파일의 문자열을 쓰는 StreamReader 문이 있는 try 블록이 있습니다. try 블록 뒤에는 try 블록에서 발생되는 모든 예외를 catch하는 catch 블록이 있습니다.

예제

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하도록 프로그래밍하는 것이 좋습니다. 특정 예외를 catch하기 위한 자세한 내용은 Catch 블록에 특정 예외 사용을 참조하십시오.

참고 항목

작업

방법: Catch 블록에 특정 예외 사용

방법: 명시적으로 예외 Throw

방법: 사용자 정의 예외 만들기

방법: Finally 블록 사용

기타 리소스

예외 처리 기본 사항