지난 주 과제 피드백 반영, 예외 처리~라이브러리 강의 수강
쇼핑몰 프로그램에서 종료 메뉴를 선택한 다음 5를 입력하면 종료, 양식에 맞지 않는 값을 입력하면 에러를 catch 해서 종료하지 않게 작동한다.
이때 5가 아닌 숫자를 입력하면 종료가 되지 않는데도 아무런 메시지가 뜨지 않는 문제가 있었다.
5가 아닌 다른 int형 값을 입력하면 종료하지 않는다는 메시지를 출력하기 위해, InputException을 throw하는 코드를 추가했다.
예외 처리의 핵심은 오류가 발생해도 프로그램이 종료되지 않는다는 것이다. 오류가 발생한 시점에 문제가 되는 부분을 다시 시도하거나 아예 뛰어넘기 위해 예외 처리를 해줄 수 있다.
Dart에서는 미리 몇 가지 예외를 정의해두고 있다. 종류가 많으니 그때그때 필요한 것이 있는지 찾아서 쓰면 좋을 것 같다. 타임아웃, 입출력, 라이브러리 로드 등...
또한 Exception
클래스를 implements
해서(extends
가 아님) 사용자 정의 예외 클래스를 만들 수도 있다.
try-catch
: 예외 처리 구문에서 기본이 되는 부분. try
에서 코드를 시도해보고 예외가 발생할 시 catch
안의 코드가 실행된다.on
: 특정 타입의 예외를 따로 구별해서 다룰 수 있다.finally
: 예외 발생과 상관없이 실행되는 부분이며 필수로 작성하지 않아도 된다.오류가 발생하면 프로그램 외부 환경 또는 시스템에서 심각한 문제를 발견하였다는 의미이기 때문에 예외처럼 건너뛸 수 없다.
따라서 오류가 발생하면 프로그램이 돌아가지 않는다. 또한 예측할 수 없고 처리할 수도 없다.
예외와 비슷하게 Dart에서 정의하는 오류가 존재하고, Error
클래스를 extends
로 상속해서 사용자 정의 오류 클래스를 만들 수 있다.
라이브러리 사용 :
import '라이브러리 이름';
dart:core
(타입, 콜렉션->더 무거운 콜렉션은 따로) : import
하지 않아도 쓸 수 있다.dart:async
(비동기 프로그래밍)dart:convert
(인코더와 디코더)dart:math
(수학 관련 기능)dart:io
(입출력) : Native flatform에서만 사용 가능하다.오늘 한 일 : 기본적인 클래스와 메서드, 변수 생성
dart:io
라이브러리에서 파일 읽기 및 쓰기 기능을 제공하니 활용한다.Character
와 Monster
클래스의 생성자이다.