try-finally(C# 참조)
업데이트: 2010년 5월
finally 블록은 try 블록에서 할당된 리소스를 정리하고 예외 발생 여부에 관계없이 항상 실행해야 하는 코드를 실행하는 데 유용합니다. try 블록이 종료되는 방법에 관계없이 항상 제어가 finally 블록으로 전달됩니다.
catch는 문 블록에서 발생하는 예외를 처리하는 데 사용되지만 finally는 앞에 나오는 try 블록의 종료 방법에 관계없이 코드의 문 블록이 반드시 실행되도록 하는 데 사용됩니다.
예제
아래 예제에는 예외를 발생시키는 잘못된 변환문이 하나 있습니다. 프로그램을 실행하면 런타임 오류 메시지가 나타나지만 finally 절이 계속 실행되어 출력이 표시됩니다.
public class ThrowTest
{
static void Main()
{
int i = 123;
string s = "Some string";
object o = s;
try
{
// Invalid conversion; o contains a string, not an int
i = (int)o;
Console.WriteLine("WriteLine at the end of the try block.");
}
finally
{
// To run the program in Visual Studio, type CTRL+F5. Then
// click Cancel in the error dialog.
Console.WriteLine("\nThe finally block is executed, even though"
+ " an error was caught in the try block.");
Console.WriteLine("i = {0}", i);
}
}
// Output:
// Unhandled Exception: System.InvalidCastException: Specified cast is not valid.
// at ValueEquality.ThrowTest.Main() in c:\users\sahnnyj\documents\visual studio
// 2010\Projects\ConsoleApplication9\Program.cs:line 21
//
// The finally block is executed, even though an error was caught in the try block.
// i = 123
}
위 예제에서는 System.InvalidCastException이 throw됩니다.
예외가 catch되었지만 finally 블록에 포함된 출력 문은 다음과 같이 여전히 실행됩니다.
i = 123
finally에 대한 자세한 내용은 try-catch-finally를 참조하십시오.
C#은 try-finally 문과 정확히 같은 기능을 수행하면서 더 간편한 구문인 using 문도 제공합니다.
C# 언어 사양
자세한 내용은 C# 언어 사양을 참조하십시오. 이 언어 사양은 C# 구문 및 사용법에 대한 신뢰할 수 있는 소스입니다.
참고 항목
작업
참조
try, catch, and throw Statements (C++)
개념
기타 리소스
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2010년 5월 |
결과를 명확하게 지정하기 위해 예제에 쓰기 문과 명령을 추가했습니다. |
고객 의견 |