작성날짜 : 2011-04-08 |
출처 : http://msdn.microsoft.com/ko-kr/library/dszsf989(v=VS.80).aspx
http://msdn.microsoft.com/ko-kr/library/zwc8s4fz(v=VS.80).aspx
try-finally
finally 블록은 try 블록에서 할당된 리소스를 정리하고 예외 발생 여부에 관계없이 항상 실행해야 하는 코드를 실행하는 데 유용합니다. try 블록이 종료되는 방법에 관계없이 항상 제어가 finally 블록으로 전달됩니다.
catch는 문 블록에서 발생하는 예외를 처리하는 데 사용되지만 finally는 앞에 나오는 try 블록의 종료 방법에 관계없이 코드의 문 블록이 반드시 실행되도록 하는 데 사용됩니다.
예제 소스
아래 예제에는 예외를 발생시키는 잘못된 변환문이 하나 있습니다. 프로그램을 실행하면 런타임 오류 메시지가 나타나지만 finally 절이 계속 실행되어 출력이 표시됩니다.
class Program { static void Main(string[] args) { int i = 123; string s = "Some string"; object o = s;
try { // Invalid conversion; o contains a string not an int i = (int)o; } finally { Console.Write("i = {0}", i); } } } |
결과 화면
try-catch-finally
일반적으로 catch와 finally를 함께 사용하여 try 블록에서 리소스를 가져와 사용하고 catch 블록에서 예외 상황을 처리한 다음, finally 블록에서 리소스를 해제합니다.
class Program { static void Main(string[] args) { try { Console.WriteLine("Executing the try statement."); throw new NullReferenceException(); } catch (NullReferenceException e) { Console.WriteLine("{0} Caught exception #1.", e); } catch { Console.WriteLine("Caught exception #2."); } finally { Console.WriteLine("Executing finally block."); } } } |
결과 화면
'Programming > .NET' 카테고리의 다른 글
[.NET] DataAdapter 생성 (0) | 2015.05.19 |
---|---|
[.NET] DataAdapter (0) | 2015.05.19 |
[.NET] Windows Form Timer (0) | 2015.05.19 |
[.NET] Form (0) | 2015.05.19 |
[.NET] Remoting (0) | 2015.05.19 |