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);
}
}
}
'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 |