[dart] 제어문을 이용한 에러 핸들링

프로그래밍 중에는 예기치 못한 상황에 대비하여 에러 핸들링이 필요합니다. Dart 언어에서는 다양한 제어문을 이용하여 에러를 처리할 수 있습니다. 이번 포스트에서는 try-catch, try-catch-finally, on, rethrow, 그리고 assert 등을 사용하여 에러 핸들링을 다루어 보겠습니다.

try-catch문

가장 기본적인 에러 핸들링 구문은 try-catch문입니다. 에러 발생 가능한 코드를 try 블록 안에 배치한 후, 발생하는 에러를 catch 블록 안에서 처리할 수 있습니다.

try {
  // 에러가 발생할 수 있는 코드
  throw Exception('예상치 못한 에러가 발생했습니다!');
} catch (e) {
  // 에러 처리 로직
  print('에러가 발생했습니다: $e');
}

try-catch-finally문

try-catch-finally문은 try-catch문에 finally 블록을 추가한 것으로, 무조건 실행되어야 하는 코드를 포함할 때 유용합니다.

try {
  // 에러가 발생할 수 있는 코드
} catch (e) {
  // 에러 처리 로직
} finally {
  // 항상 실행되어야 하는 코드
}

on 키워드

특정 타입의 에러만을 처리하고 싶을 때 on 키워드를 사용할 수 있습니다. 이는 catch 블록 대신 사용됩니다.

try {
  // 에러가 발생할 수 있는 코드
  throw FormatException('형식 에러가 발생했습니다');
} on FormatException {
  // FormatException에 대한 에러 처리 로직
  print('형식 에러가 발생했습니다!');
}

rethrow 문

현재 발생한 에러를 잡아 다시 던질 때 rethrow문을 사용할 수 있습니다. 이는 에러를 잡지 않고 상위 레벨로 전파할 때 유용합니다.

try {
  // 에러가 발생할 수 있는 코드
} catch (e) {
  // 에러 처리 로직
  rethrow; // 현재 에러를 잡아 다시 던짐
}

assert 문

프로그램이 올바르게 동작하는지 확인하기 위해 assert문을 사용할 수 있습니다. 만약 조건이 거짓이라면 에러가 발생하게 됩니다.

void buyFruits(int count) {
  assert(count > 0, 'count는 0보다 커야 합니다!');
  // 나머지 코드
}

이렇게 다양한 제어문을 이용하여 Dart에서의 에러 핸들링을 할 수 있습니다. 프로그램의 안정성과 견고성을 위해 에러 핸들링에 충분한 주의를 기울이는 것이 중요합니다.