티스토리 뷰

C# 예외처리, 고급예외처리 (try, catch, finally, throw) 적용시키기

이번 시간에는 C#프로그래밍언어에서
예외처리를 하는 방법을 공부해보겠습니다.

예외처리란 말 그대로 예외가 발생했을 때
어떻게 처리를 해줄 것이냐를 정해주는 것입니다.

C# 예외처리

예를들어서 정수를 입력받아야하는데,

문자나 특수문자를 입력하거나

인덱스가 10까지 있는 배열인데,
15번째 인덱스에 접근하려고하거나

없는 파일인데,
불러오려고 할 경우에

예외처리를 각각 주어 처리할 수 있겠죠.

인덱스 출력 코드

예를 들어서 위와 같은 코드는

크기가 5인 char형 배열을 선언해서

a~e까지 저장을 해주고

인덱스를 입력받아서 출력하는 프로그램입니다.

인덱스 입력창

그래서 3을 입력하면

정상적으로 0,1,2,3번째 인덱스인
b가 정상적으로 출력되는 것을 알 수 있습니다.

그러나 여기서 인덱스를 초과하는
10을 입력하면 어떻게 될까요?

처리되지 않은 예외

위와 같은 처리되지 않은 예외가 발생합니다.

그리고 프로그램이 강제적으로 종료되죠.

그래서 예외처리를 해주는 것 이랍니다.

조건문 사용

우선 가장 일반적으로 사용하고 있는

조건문을 사용한 일반기본의 예외처리입니다.

노란색 박스안에 넣어준 것 처럼

위 코드에서는
0과 4를 벗어나는 정수를 입력하게되면,

예외를 발생시켜서
다시 입력을 받게됩니다.

(문자나 문자열입력시또 예외가 발생하는데
이건 일반예외처리가 뭔지 설명하기위해
간단히 짠 코드이므로 그냥 넘어가주세요.)

C# try, catch

try와 catch 사용

그 다음은 고급예외처리입니다.

고급예외처리에서는
일반적으로 try, catch 가사용되고

throw와 finally를 사용할 수 있습니다.

위의 노란색 박스에서

각각 2가지의 예외처리를 해주고있습니다.

첫 캐치구문에서는,
FormatException 예외를 받아서
정수를 입력해 달라고 오류를 보냅니다.

FormatException은 말 그대로
포멧이 잘못 된 경우입니다.
(정수형변환을 해야하는데 문자열을 넣거나. 등)

그 다음은

IndexOutOfRangeException 예외입니다.
예외의 말 그대로 범위를 벗어난 경우
발생하게되는 오류 메세지입니다.

이런 메세지들은 디버그시 확인할 수 있습니다.
(개념만 집어서 간단하게 설명했습니다.)

결과화면창

다음은 각각 출력의 결과입니다.

보시면, 처리가 잘 되고있습니다.

C# throw finally

throw와 finally 사용

이제 throw와 finally도 사용해 보겠습니다.

일단 My_fx라는 클래스에서
static매서드를 하나 생성합니다.

그런데 이 메세지는 13번줄 처럼
throw를 사용해서 강제로 예외를 떤집니다.

그리고 메인에서 실행해주는데요?
try문으로 감싸주어 그 예외를 catch해줍니다.

catch안에서 예외를 처리해주면되고

마지막으로 finally구문은
예외가 발생하든 안하든 무조건 실행해주게됩니다.

그래서 마지막에 그래도 이건 실행이 되는거죠.

마지막결과화면

출력결과는 위와 같습니다.

이처럼 C#에서 예외처리와
고급예외처리를 하는 방법을 알아보았습니다.

위에는 개념만 전달하기위해서
완벽한 처리는 해주지 않았는데

응용하면 여러 예외처리가 가능하므로
응용을 해보시기 바랍니다.

저도 더 공부를 해야겠습니다.

다른 C#내용 공부하러가기

[C#] 쓰레드(Thread) 사용방법 + start() 메서드(method)

c# 인터페이스(interface) 그리고 IComparable, IDisposable 무엇

[C#] Dictionary 메모화 객체 사용하는 방법 효율적!

댓글
댓글쓰기 폼
네이버 이웃추가
«   2019/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함