[Dart] Exception 처리하기

Sin_B·2023년 6월 1일
0

Dart

목록 보기
10/14

Exception이란?

Exception은 번역하면 예외라는 뜻이 되는데, Dart에서는 이 예외 처리를 위한 다양한 기능을 제공해줍니다. 예외는 프로그램 실행 중에 발생하는 예기치 않은 상황을 나타내며, 프로그램의 흐름을 중단하고 오류를 처리하는데 사용됩니다.

보통 예외가 발생하는 상황은 두 가지로 나눌 수 있습니다.
인간의 실수에 의한 상황(Human error)과 컴퓨터의 내부적인 문제로 인한 상황(Computer error)입니다.

Human error

  • 사용자 입력 오류
    사용자가 잘못된 형식의 입력을 제공하는 경우, 예외 처리를 통해 그에 대한 대응을 할 수 있습니다. 예를 들어, 사용자로부터 숫자를 입력받아 계산하는 프로그램에서, 사용자가 문자열을 입력하는 경우 예외를 발생시킬 수 있습니다.
  • 파일 누락
    파일을 읽거나 쓸 때, 파일이 존재하지 않는 경우 예외 처리를 통해 파일 누락 상황을 처리할 수 있습니다.
  • 네트워크 오류
    네트워크 통신 중에 연결이 끊기거나 잘못된 주소로 요청을 보내는 경우에 대한 예외 처리를 할 수 있습니다.

Computer error

  • 메모리 오류
    메모리 할당 또는 해제와 관련하여 오류가 발생하는 경우, 예외 처리를 통해 메모리 누수를 방지하거나 오류를 복구할 수 있습니다.
  • 파일 시스템 오류
    파일 시스템이 손상되어 파일을 읽거나 쓰는데 문제가 발생하는 경우, 예외 처리를 통해 이를 감지하고 복구할 수 있습니다.
  • 시스템 리소스 부족
    CPU, 디스크 공간, 네트워크 대역폭 등의 시스템 리소스가 부족한 경우 예외 처리를 통해 이를 감지하고 사용 가능한 리소스가 될 때까지 대기하거나 예외를 처리할 수 있습니다.

위의 예시들은 예외가 발생하는 일부 상황들입니다. 예외 처리는 프로그램의 안정성을 향상시키고 예기치 못한 상황에 대응할 수 있는 방법을 제공합니다. 다음은 Dart에서의 예외 처리 관련 기능에 대한 설명입니다.


Exception 처리 기능

예외(Exception) 처리를 위한 Dart의 try-catch 문법에는 몇 가지 추가적인 기능이 있습니다. 이 기능들은 예외 처리를 더욱 유연하게 할 수 있도록 도와주는데, 지금부터 이 기능들에 대해 설명하겠습니다.

try-catch

try-catch문은 예외 처리를 위해 사용됩니다. try 블록 내에서 예외가 발생할 수 있는 코드를 작성하고, 예외가 발생하면 해당 예외를 처리하기 위해 catch 블록을 사용합니다.
catch 블록은 예외의 타입과 일치하는지 확인하고, 일치하는 경우에만 해당 예외를 처리하는 코드를 실행합니다.

rethrow

rethrow는 현재 처리 중인 예외를 다시 던지는데 사용됩니다.
catch 블록 내에서 예외를 처리한 후에 rethrow를 호출하면, 예외를 현재 블록에서 던질 수 있습니다. 이를 통해 상위 호출자에게 예외를 전파할 수 있습니다.

on Exception

on 키워드를 사용해 특정 예외 타입에 대한 예외 처리를 수행할 수 있습니다. catch 블록에서 예외 타입을 명시하지 않고 on 키워드를 사용하면, 해당 블록은 모든 예외에 대해 실행됩니다.

finally

finally 블록은 try-catch문의 실행 후 항상 실행되는 코드를 포함합니다. finally 블록은 예외 발생 여부와 관계없이 항상 실행됩니다.

예외 클래스 직접 정의

예외 클래스를 직접 정의하는 방법도 있는데, 사용자가 만든 class에 Exception 인터페이스를 implements하고 toString을 override해서 if문으로 특정 조건일 때 Exception을 반환한다고 하면, 직접 만든 Exception을 사용할 수 있다.

profile
| App Developer | 제가 한 개발을 읽는 사람이 이해하기 쉽게 쓰려고 노력합니다.

0개의 댓글