[TIL] 예외 처리, 라이브러리

티라노·2024년 11월 4일
0

Today I Learned

목록 보기
12/21

지난 주 과제 피드백 반영, 예외 처리~라이브러리 강의 수강

2주차 과제 피드백 반영

쇼핑몰 프로그램에서 종료 메뉴를 선택한 다음 5를 입력하면 종료, 양식에 맞지 않는 값을 입력하면 에러를 catch 해서 종료하지 않게 작동한다.
이때 5가 아닌 숫자를 입력하면 종료가 되지 않는데도 아무런 메시지가 뜨지 않는 문제가 있었다.

5가 아닌 다른 int형 값을 입력하면 종료하지 않는다는 메시지를 출력하기 위해, InputException을 throw하는 코드를 추가했다.


예외 처리

예외 처리의 핵심은 오류가 발생해도 프로그램이 종료되지 않는다는 것이다. 오류가 발생한 시점에 문제가 되는 부분을 다시 시도하거나 아예 뛰어넘기 위해 예외 처리를 해줄 수 있다.

종류

Dart에서는 미리 몇 가지 예외를 정의해두고 있다. 종류가 많으니 그때그때 필요한 것이 있는지 찾아서 쓰면 좋을 것 같다. 타임아웃, 입출력, 라이브러리 로드 등...
또한 Exception 클래스를 implements 해서(extends 가 아님) 사용자 정의 예외 클래스를 만들 수도 있다.

키워드

  • try-catch : 예외 처리 구문에서 기본이 되는 부분. try 에서 코드를 시도해보고 예외가 발생할 시 catch 안의 코드가 실행된다.
  • on : 특정 타입의 예외를 따로 구별해서 다룰 수 있다.
  • finally : 예외 발생과 상관없이 실행되는 부분이며 필수로 작성하지 않아도 된다.

오류

오류가 발생하면 프로그램 외부 환경 또는 시스템에서 심각한 문제를 발견하였다는 의미이기 때문에 예외처럼 건너뛸 수 없다.
따라서 오류가 발생하면 프로그램이 돌아가지 않는다. 또한 예측할 수 없고 처리할 수도 없다.
예외와 비슷하게 Dart에서 정의하는 오류가 존재하고, Error 클래스를 extends 로 상속해서 사용자 정의 오류 클래스를 만들 수 있다.


Dart에서 쓸 수 있는 주요 라이브러리

라이브러리 사용 : import '라이브러리 이름';

Dart SDK 표준 라이브러리

  • dart:core (타입, 콜렉션->더 무거운 콜렉션은 따로) : import하지 않아도 쓸 수 있다.
  • dart:async (비동기 프로그래밍)
  • dart:convert (인코더와 디코더)
  • dart:math (수학 관련 기능)
  • dart:io (입출력) : Native flatform에서만 사용 가능하다.
  • 브라우저 API와 상호작용하는 기능을 제공하는 웹 플랫폼 전용 라이브러리들

Dart SDK 에서 제공하지 않는 외부 라이브러리

  • 공식 라이브러리는 아니지만 그만큼 많이 쓰여서 개발자들이 만들어 둔 라이브러리
  • Pub.dev에서 열람할 수 있다. 그때그때 필요한 것을 검색해서 쓰면 좋을 것 같다.
  • 파이어베이스 등의 외부 연동 프로그램과 연결하는 라이브러리, 편하게 디자인하기 위한 도구를 제공하는 라이브러리, 권한을 받아오는 라이브러리 등 종류가 다양하다.

과제 - RPG 게임 만들기

오늘 한 일 : 기본적인 클래스와 메서드, 변수 생성

메모

  • 게임 결과를 텍스트 파일에 저장해야 하는데, dart:io 라이브러리에서 파일 읽기 및 쓰기 기능을 제공하니 활용한다.
  • 필수 2번 : 정규표현식을 stdin.readLineSync()에 바로 적용하는 방법이 있는지 찾아본다.

  • 위는 CharacterMonster 클래스의 생성자이다.
  • 지금은 파일에서 캐릭터와 몬스터 정보를 받아와서 생성자의 매개변수로 하나씩 넣는 방식을 선택했지만, 열거형으로 스테이터스를 묶어서 한 번에 전달해도 괜찮을 것 같다.

0개의 댓글