Flutter

예외 vs 오류

우왕차 2024. 11. 4. 20:44

예외

예외는 예상한 상황과 다른 상황이 진행되는 것을 말한다.예외 상황이 발생하면 프로그램이 비정상적으로 종료가 되기 때문에 예외상황을 예상하고 처리해야 정상적으로 구동되게 된다.

 

try~catch~finally

 

try { //구동되는 코드를 짠다
	String invalidNumber = "abc";
	int result = int.parse(invalidNumber);
	print(result);
    
// on은 오류중에서 특정한 형식의 오류만 골라내서 특정한 오류 구문을 사용
} on FormatException catch (e) {
	print(e);
    
// 오류구문이 발생하면 실행되는 부분
} catch (e) {
	print(e);
    
// 예외 구문이 끝난 후 무조건 실행된는 구문
} finally {
  print('예외 처리 끝 -');
}

 

 

 

오류 구문은 위에 4가지로 간단히 정리 할 수 있다.

 

throw라는 것도 있는데 이건 나중에 다뤄야겠다.

 

오류

오류는 주로 프로그램 외부의 환경이나 시스템 레벨에서 발생하는 심각한 문제라고 하는데 예외 상황과 다르게 갑자기 하드웨어가 멈춤다던지 튕긴다던지 하는 프로그램이 구동될 수 없는 상황을 말한다. 이 경우에는 프로그램이 멈추는 것이 아니라 갑자기 꺼져서 프로그램에 문제가 발생할 수 있어서 주의가 필요하다.

 

오류상황이 종류가 많이 상황이 다양하기 때문에 이를 컴퓨터에서 정의해놓은 오류상황이 있다. 그리고 이를 제외하고 개발자가 정의해서 오류를 대처할 수 도 있다.

 

class AgeError extends Error {
  final String message;
  
  AgeError(this.message);
}

class AgeError extends Error {
  final String? message;
  
  AgeError(this.message);
  
  @override
  String toString() => message ?? 'AgeError 가 발생했어요 !';
}

 

위와 같이 Error 클래스를 상속 받아서 정의를 할 수 있다.

 

 

  예외 오류
발생원인 프로그래밍 로직 문제(ex. 논리적 오류, 비정상적인 입력 주로 시스템 문제(ex. 메모리 부족)
예상 가능 여부 O X
처리 가능 여부 O(try-catch) X
프로그램 정상 실행 가능 여부 O X(비정상적인 종료

 

위의 표로 간단히 비교할 수 있다.

'Flutter' 카테고리의 다른 글

파일에 저장하기  (0) 2024.11.06
파일 읽기  (0) 2024.11.05
무한 루프  (0) 2024.10.30
함수형 프로그래밍  (0) 2024.10.29
StateFulWidget & StatelessWidget  (0) 2024.09.24