예외(Exception)에 대해서 알아보자

 

정의는 프로그램 실행동안 발생할 수 있는 예외적인 상황에서 발생하는 Exception 객체

 

종류에는 2가지로 나누어질 수 있다

  -> Dart가 사전정의한 예외. 자주 발생하는 예외로는 아래와 같이 있다

    -> DeferredLoadException - 라이브러리 사용시점에 라이브러리가 로드 되지 않았을떄

    -> FormatException - 타입이 서로 안맞을때(int를 String에 넣는다거나..)

    -> IOException - 입출력 관련 동작중 발생하는 예외(FIleDecriptor, socket, protocol등등..)

    -> OSError - 운영체제 레벨에서 발생하는 예외, 운영체제 관련해서 에러코드를 가지고 있다 

    -> TimeoutException - 비동기 결과 돌릴때 시간이 넘 오래걸리거나 할때 발생하는 예외 

  -> 사용자가 정의한 예외

    -> 위 예외에 없을때 사용자가 정의한 모든 예외 

    -> Exception클래스를 상속받아서 아래와 같이 예외 클래스를 만들면 됨. 

// 예외 클래스 생성
class AgeException implements Exception {
  final String message;
  
  AgeException(this.message);
  
  void printAge(int age){
    if (age < 0){
      throw AgeException(null);
    }
  }
  @override
  String toString() => messsage ?? 'AgeException 발생';
}

// 실제 예외 발생 코드
void main(){
  try {
    printAge(-8);
  } catch (e){
    print(e);
  }
}

 

구문을 좀더 자세히 살펴보면

  -> try - 시도하고자 하는 코드 

  -> catch - 발생한 예외를 잡는 코드 

  -> on - catch와 같이 쓰이며 try에서 발생하는 특정타입의 예외를 다루기 위해 사용

on IOException catch(e){
  ...
}

  -> finally - 예외 발생과 상관없이 무조건 마지막에 실행되는 구문

finally{
  ...
}

4개로 나누어진다 

 

마지막으로 throw가 있는데 특정 exception을 발생시키는 구문이다

throw [Exception이름];

 

위와 같이 예외를 발생 시킬수 있다 

+ Recent posts