관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

파이썬 날개 달기 5 - 예외 처리 본문

프로그래밍 언어/파이썬

파이썬 날개 달기 5 - 예외 처리

huenuri 2024. 9. 8. 00:29

프로그램을 만들다 보면 수없이 많은 오류를 만나게 된다. 물론 오류가 발생하는 이유는 프로그램이 잘못 동작하는 것을 막기 위한 파이썬의 배려이다.

이번에는 파이썬에서 오류를 처리하는 방법에 대해서 알아보자.


 

 

오류는 언제 발생하는가?

오류를 처리하는 방법을 공부하기 전에 어떤 상황에서 오류가 발생하는지 한번 알아보자. 오타를 입력했을 때 발생하는 구문 오류 같은 것이 아닌 실제 프로그램에서 자주 발생하는 오류를 중심으로 살펴보자.

 

존재하지 않는 파일을 사용하려고 시도할 때

 

 

0으로 나누는 경우

 

 

indexError


 

 

 

오류 예외 처리 기법

1. try-except 문


 

 

 

2. try-finally 문

finally 절은 try 문 수행 도중 예외 발생 여부에 상관없이 항상 수행된다. 보통 finally 절은 사용한 리소스를 close 해야 할 때 많이 사용한다.

 


 

 

 

3. 여러 개의 오류 처리하기

 

 

 

 


 

 

 

4. try-else 문

try 문 수행 도중 오류가 발생하면 excpt 절, 오류가 발생하지 않으면 else 절이 수행된다.

 


 

 

 

오류 회피하기

코드를 작성하다 보면 특정 오류가 발생할 경우 그냥 통과시켜야 할 때가 있다.

 

 


 

 

 

오류 일부러 발생시키기

프로그래밍을 하다 보면 오류를 일부터 발생시켜야 할 경우도 있다. 파이썬은 raise 명령어를 사용해 오류를 강제로 발생시킬 수 있다.

 

만약 자식 클래스가 fly 함수를 구현하지 않은 상태로 fly 함수를 호출하면 어떻게 될까?

 

Eagle 클래스는 fly 매서드를 오버라이딩하여 구현하지 않았기에 에러가 발생하고 있다.


 

 

 

 

처음에는 부모 클래스를 삭제하고 자식 클래스만 실행했다가 오류가 지워지지 않았다. 이제 잘 되고 있다.


 

 

 

예외 만들기

특수한 경우에만 예외를 처리하려고 종종 예외를 만들어 사용한다. 이번에는 직접 예외를 만들어보자. 예외는 다음과 갂ㅌ이 파이썬 내장 클래스인 Exception 클래스를 상속하여 만들 수 있다.

 

 

 

 

실행해보면 "천사"가 한번 출력된 후 MyError가 발생한다.


 

 

 

이번에는 예외 처리 기법을 사용하여 MyError 발생을 예외 처리해보자.

 


 

 

 

오류 메시지를 사용하고 싶을 때 다음처럼 예외 처리를 하면 된다.

 

 

하지만 이렇게 하니 오류 메시지는 출력이 되지 않는다. 오류 메시지가 보이고 하려면 다음과 같은 __str__ 메서드를 무견해야 한다. 이 메서드는 print(e)처럼 오류 메시지를 pirnt 문으로 출력할 경우에 호출된다.

 

 

 


 

 

 

학습을 마치고

자바로 예외 처리하는 부분을 학습했는데 파이썬으로도 학습을 진행했다. 파이썬도 이제 별로 어렵게 느껴지지 않는다. 이제 내장 함수와 표준 라이브러리만 공부하면 파이썬의 기본 학습은 모두 마치게 된다.

내일까지 파이썬 공부를 마치고 다른 과목 공부를 진행해보고 싶다.