Language/C#

[C#] try ~ catch ~ finally, throw

마탁이 2020. 12. 23. 20:08

1. try ~ catch ~ finally

 - try문은 반드시 최소한 1개의 catch 문 혹은 finally 문 코드 블록은 존재해야 한다.

 - 복수개의 catch 문을 작성할 경우 작은 범위의 예외에서 큰 범위로 작성해야 한다.

 - .NET Framework 2.0 부터 StackOverflowException 은 catch 블록에서 처리할 수 없고 바로 프로세스가 종료 된다.

try
{
	int number = Int32.Parse(data);
	Console.WriteLine("number : {0}", number);
} catch (ArgumentNullException ex) //입력 인자가 없을 경우
{
	Console.WriteLine("ArgumentNullException 처리 : {0}", ex.Message);
} catch (Exception ex) //최상위 예외 형식
{
	Console.WriteLine("Exception 처리 : {0}", ex.Message);
}

 

2. throw

 - 예외를 코드 작성자가 명시적으로 발생시킬 경우 사용한다.

 - 예외를 명시적으로 발생 시키는 이유

  > 공용 모듈과 같은 프로그램을 개발할 경우 만들어 놓은 API 를 다른 어디선가 참조하게 된다.

     하지만 입력 값에 대한 모든 Validation 을 할 수 없으며, 올바르지 않은 입력 인자 혹은 처리 값인 경우

     명시적으로 예외를 발생 시키고, 사용자로 하여금 올바른 처리를 하도록 유도할 수 있다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SqlerCSharp.Ch08_02
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                ShowMessage("메시지를 출력 합니다.");
                ShowMessage(null);
            }
            catch (ArgumentNullException ex)
            {
                //예외처리
                Console.WriteLine("ArgumentNullException 처리 : {0}", ex.Message);
            }
        }
        //throw 구문 작성
        static void ShowMessage(string message)
        {
            if (message == null)
                throw new ArgumentNullException("message");
            Console.WriteLine(message);
        }
    }
}

 

<throw 예외처리 예제에 대한 출력>

'Language > C#' 카테고리의 다른 글

[C#] 배열 복사  (0) 2020.12.23
[C#] Jagged 배열  (0) 2020.12.23
[C#] 박싱(Boxing)과 언박싱(Unboxing)  (0) 2020.12.23
[C#] const 와 readonly  (0) 2020.12.23
[C#, 공통] 변수 및 함수 표기 방식  (0) 2020.12.23