목차

이전 항목

3. 빠르게 파이썬 소개하기: 3부, 라이브러리 사용

다음 항목

5. 고급 프로그래밍

현재 문서

주의사항

해당 문서는 중요 변경 작업 중에 있습니다. 일부 문서에 텍스트가 빠져있거나, 불어로 플레이스홀더(placeholder) 자리차지만 되어 있을 수 있습니다.

4. 빠르게 파이썬 소개하기: 4부, 예외(exceptions)

리보그 세상은 파이썬 예외(exceptions)를 엄청 사용한다.

4.1. 키워드 raise

다음 프로그램을 실행해 보자:

raise ReeborgError("Surprise!")

상기 명령어를 실행하면 다음과 같은 것을 볼 것이다:

raise

4.2. 예약어 try, except, finally

예외를 발생(raise an exception)시키는 것이, 다소 급작스럽지만, 프로그램 제어를 하는 또다른 방식이 된다. 예외를 발생기키려고 하면, 다음 패턴이 흔히 사용되는 방식이다:

try:
    # 예외를 일으키는 코드...
    # 또다른 유형의 예외을 일으키는 코드...
    # 또다른 유형의 예외을 일으키는 코드...
except ExceptionName1:
    # 예외를 처리한다.
except ExceptionName2:
    # 또다른 예외를 처리한다.
finally:
    # 올바른 유형의 예외가 인식되지 않더라도
    # 종국에 수행하는 작업

다음에 시연된 예제를 시도해 볼 수 있다. 미로를 불러와서 이해하려고 하면, Documentation 메뉴를 먼저 클릭하고, “Big maze”를 선택한다.

random

위에서, 파이썬 random 모듈에서 randint 함수를 가져온다; 매번 while 루프가 돌 때마다, 임의로 정수를 뽑도록 한다. RUR.MAX_STEPS 변수값을 10,000 으로 설정한다; 이 변수로 해당 프로그램에서 실행될 수 있는 최대 명령어 수행횟수를 제어한다; 기본디폴트 설정으로, 1,000 으로 설정되지만, 전체 프로그램을 수행하기에는 충분해 보이지는 않는다.

벽이 앞을 막고 있다면 move() 명령어가 ReeborgError 예외를 촉발한다; 하지만, turn_left() 명령어는 결코 예외를 촉발할 수 없다.

사용자 프로그램에 의해서 ReeborgError 또다른 예외가 발생될 수 있다. 예를 들어, 프로그램이 다음과 같다면:

move()
Mov()

NameError 명칭 예외가 발생되는데, 이유는 Mov 가 알수없는 명령어가 되기 때문이다. 프로그램이 다음과 같다면:

move()
  move()

IndentationError 들여쓰기 예외가 발생된다. 프로그램이 다음과 같다면:

move)

SyntaxError 구문예외가 예외로 발생된다; 등등...