안녕하세요!
게임개발자가 되기위해 공부하고 있는 구구입니다.
오늘은 C#의 예외처리에 대해 알아보도록 하겠습니다.
- 예외처리
- 프로그램 발생시 예외가 발생할 수 있음.(ex) 배열의 범위를 넘어간 index를 호출
- 해당 오류에 의해 시스템이 비정상적으로 종료하는 것을 막기위해 예외처리
- try ~ catch 키워드
- 프로그램의 안정성
- try에는 예외를 발생시킬 수 있는 코드가 작성
- catch에는 예외가 발생했을때의 처리 코드
- catch를 쓸때는 괄호에 예외와 같은 타입의 참조변수를 선언해야 함.
try안에 inputNum은 ReadLine에 의해 받은 데이터를 int형으로 캐스트한 것인데 만약 받은 데이터가 정수가 아니라면 오류가 발생할 수 있습니다. 따라서 catch를 이용해서 자료형이 잘못된 것을 잡아냅니다.
이때 괄호안에 예외와 같은 타입의 참조변수를 선언해야합니다.(FormatException e)
- throw 키워드
- 상위 호출 메소드로 예외 객체를 전달
- 조건 연산자에서 사용
catch에서 Exception e라는 참조변수를 선언했고 throw는 new Exception을 통해 예외클래스 객체를 생성했습니다.
생성된 예외클래스 객체는 throw를 통해 예외를 발생시킵니다. 그리고 이를 catch가 받습니다.
throw의 특징은 한번 try코드 내부에서 throw해버리면 남은 try코드는 실행되지 않는다는 것입니다.
- try ~ catch ~ finally 키워드
- 예외 상황과 관련없이 무조건 처리(반드시 해야하는 처리가 있을 시 사용)
- 예외 상황이 발생하던 안하던 무조건 처리됨.
해당코딩에서 중요시 볼 점은 예외가 발생하던 안하던 finally안의 코드는 무조건 실행된다는 것입니다.
- 사용자 정의 예외 클래스
class MyException : ApplicationException
{
public int Num { get; set; }
public MyException():base() { //base의 생성자 함수 콜함
}
public MyException(int a) {
Num = a;
}
public override string ToString() { //부모클래스에 해당함수가 존재한다는 뜻
return "Num: " + Num;
}
}
- 기존 예외처리 클래스에서 상속(ApplicationException에서 상속)
- when 키워드, StackTrace 키워드
when(bool을 반환하는 조건) = 해당 상황이 발생할 때 조치하겠다는 뜻
e.StackTrace = 스택을 추적해서 보여줌.(어디서 실행됬는지를 알려줌)
오늘은 여기까지 하도록 하겠습니다.
'게임 개발 공부 > C#' 카테고리의 다른 글
C# 람다식 (0) | 2021.12.23 |
---|---|
C# 델리게이트&이벤트 (0) | 2021.12.22 |
C# 일반화 프로그래밍 2 (0) | 2021.12.20 |
C# 일반화 프로그래밍 1 (0) | 2021.12.19 |
C# 컬렉션 2 (0) | 2021.12.15 |
댓글