예외처리 - try, catch, finally, throw new Exception
//예외처리 - try, catch, finally
//예전에 java랑 Jsp 다룰때 꽤 많이 썼었다.(try, catch 안쓰면 컴파일 에러나는 것도 꽤 있었다.)
//쉽게 생각하자.
//try - 하다가 (문제가 없어야 되는게 맞지만) 문제가 생기면
//catch - 잡는다.(문제가 없으면 잡을 것도 없다.)
//finally - 마지막으로 문제가 있든 없든 실행할 코드 - 안써도 됨.
class ExceptionTest //일부러 에러 내보기 위한 class생성
{
public int i = 10;
}
class Program
{
//함수로 에러발생이 나게 만들어 보자 - 아래의 main함수 먼저 보고 돌아오자.
static void TestDiv(int n1, int n2)
{
if(n2==0)
{
//커스텀 Exception - 내가만든 에러 메세지
throw new Exception("n2는 0이 아니어야 한다.");
}
Console.WriteLine("n1 / n2 함수");
Console.WriteLine("{0} / {1} = {2}", n1, n2, n1 / n2);
}
//메인 함수
static void Main(string[] args)
{
ExceptionTest t = null;
//예외 처리
try
{
//위험 요소가 있는 코드를 작성
Console.WriteLine("Test : {0}", t.i);
}
catch (NullReferenceException e) //특정 예외만 골라내기 - new되지 않는 class사용하려고 함
{
//try 부분에서 에러가 발생하면 catch 소스로 접근
//프로그램을 죽이지 않고 처리하기 위한 방법
Console.WriteLine("널 참조 예외가 발생");
Console.WriteLine(e.Message); //한글로 간략 오류 설명
Console.WriteLine("=======================");
Console.WriteLine(e); //예외 메세지 전체
}
//catch를 여러개 사용할 수 있는데 위에서 먼저 잡히면 아래껀 무시
catch (Exception e) //모든 예외
{
//try 부분에서 에러가 발생하면 catch 소스로 접근
//프로그램을 죽이지 않고 처리하기 위한 방법
Console.WriteLine("예외가 발생함.");
Console.WriteLine(e.Message); //한글로 간략 오류 설명
//Console.WriteLine("=======================");
//Console.WriteLine(e); //예외 메세지 전체
}
finally
{
//예외가 발생 하든 안하든
//무조건 들어와서 실행되는 영역.
Console.WriteLine("try 마지막");
}
//0으로 나눌때 에러를 발생해보자
try
{
Console.WriteLine("10/0 = ?");
//int n1 = 10 / 0; //에러 - 0으로 나눌 수 없어서 빨간줄
int n1 = 10;
int n2 = 0;
//int n3 = n1 / n2;
//Console.WriteLine("{0} / {1} = {2}", n1, n2, n3);
TestDiv(n1, n2);
}
catch(DivideByZeroException e) //0으로 나눌때 잡는 Exception
{
Console.WriteLine("0으로 나누려고 함");
Console.WriteLine(e);
}
catch (Exception e)
{
Console.WriteLine("에러!!!!!!!");
Console.WriteLine(e);
}
//catch가 개발용...테스트 할 때 포함 하면 좋지만
//성능이 그리 좋은게 아니라
//배포시에는 뺄수 있으면 빼는 것이 좋다.
}
}
'공부 > C#' 카테고리의 다른 글
yield return, yield break (0) | 2016.05.24 |
---|---|
Console 키입력 - Console.ReadKey, ConsoleKeyInfo (0) | 2016.05.12 |
파일 로드 - FileStream, StreamReader, ReadAllText, ReadAllLines (0) | 2016.05.12 |
파일 저장 - FileStream, StreamWriter, WriteAllText, WriteAllLines (0) | 2016.05.12 |
컬렉션(Collection), 제네릭 컬렉션(Generic Collection) - 예) ArrayList, List<T> (0) | 2016.05.11 |