-
I. 예외 처리
: 예외 상황을 처리하는 메커니즘.
try
{
"실행 코드"
}
catch ("예외 타입" "예외 타입 객체")
{
"예외 타입" 에 대한 예외 처리 코드"
}
finally
{
"항상 실행되는 코드"
}예외 (Exception)
: 프로그램 실행 중에 발생하는 예기치 않은 상황
: 프로그램의 정상적인 흐름을 방해하고 오류를 야기함.
예외처리의 필요성
: 오류 상황을 적절히 처리하고, 프로그램의 실행을 계속할 수 있음.
: 프로그램의 안정성을 높이고 디버깅을 용이하게 함.
catch 블록
: 위에서부터 순서대로 실행.
: 상속 관계에 있는 경우 상위 클래스의 예외 타입의 catch 블록이 먼저 실행.
try { int result = 10 / 0; // 실행하려고 하는 코드 Console.WriteLine("결과: " + result); } catch (DivideByZeroException ex) // 먼저 실행 : 실행할시 나타날 수 있는 오류 { Console.WriteLine("0으로 나눌 수 없습니다."); } catch (Exception ex) // 이후에 실행 { Console.WriteLine("예외가 발생했습니다: " + ex.Message); }
finally 블록
: 예외의 발생과 상관없이 무조건 실행.
: else 처럼 생략이 가능함
finally { Console.WriteLine("finally 블록이 실행되었습니다."); }
사용자 정의 예외 처리
: 필요에 따라 Exception 클래스를 상속받는 것으로 새 클래스를 만들 수 있다.
public class NegativeNumberException : Exception // Exception 클래스 상속 { public NegativeNumberException(string message) : base(message) // 사용자 지정 예외 처리 클래스의 생성자 // !! base(message) = 이니셜라이저 : 부모 클래스 Exception의 생성자에 message를 먼저 전달 { } } try { int number = -10; if (number < 0) { throw new NegativeNumberException("음수는 처리할 수 없습니다."); // 사용자 예외 처리 지정 } } catch (NegativeNumberException ex) { Console.WriteLine(ex.Message); } catch (Exception ex) { Console.WriteLine("예외가 발생했습니다: " + ex.Message); }
무차별적으로 예외처리를 하면 코드가 지저분해지므로, 필요한 곳에만 하도록 하자...
'C#' 카테고리의 다른 글
델리게이트 (0) 2023.08.25 값형과 참조형 (0) 2023.08.24 인터페이스와 열거형 (0) 2023.08.24 텍스트 던전 콘솔로 구현하기 - 작업중 학습(2) (0) 2023.08.23 스네이크 게임 만들기 (수정예정) (0) 2023.08.21