본문 바로가기

Python

220209 학습일기

1. 예외 만들기

프로그램 수행 도중 특수한 경우에만 예외 처리를 하기 위해서 종종 예외를 만들어서 사욯한다.

에외는 파이썬 내장 클래스인 Exception 클래스를 상속하여 만들 수 있다.

 

 

한때 유행했던 양파키우기로 코드를 짜보겠다.

class  MyError(Exception):
    pass

def 양파키우기(onion):
    if onion == '나쁜 말':
        raise MyError()
    print(onion)

양파키우기("착한 말")
양파키우기('나쁜 말')

<출력값>

착한 말
Traceback (most recent call last):
  File "c:\Users\tina0\OneDrive\바탕 화면\스터디 프로젝트\gui_basic\임시.py", line 10, in <module>     
    양파키우기('나쁜 말')
  File "c:\Users\tina0\OneDrive\바탕 화면\스터디 프로젝트\gui_basic\임시.py", line 6, in 양파키우기    
    raise MyError()
__main__.MyError

 

class에 오류 관련된 것을 정의하고 그것을 raise로 오류를 강제로 발생시키는 건 처음해보는 일이다.

 

 

근데 생각해보면 당연한게 NotImplementedError도 클래스다.

 

 

위의 코드는 사실 아래의 코드와 같은 맥락이다.

class  MyError(Exception):
    pass

def 양파키우기(onion):
    if onion == '나쁜 말':
        raise NotImplementedError()
    print(onion)

양파키우기("착한 말")
양파키우기('나쁜 말')

<출력값>

착한 말
Traceback (most recent call last):
  File "c:\Users\tina0\OneDrive\바탕 화면\스터디 프로젝트\gui_basic\임시.py", line 10, in <module>     
    양파키우기('나쁜 말')
  File "c:\Users\tina0\OneDrive\바탕 화면\스터디 프로젝트\gui_basic\임시.py", line 6, in 양파키우기    
    raise NotImplementedError()
NotImplementedError

 

 

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

class  MyError(Exception):
    pass

def 양파키우기(onion):
    if onion == '나쁜 말':
        raise MyError()
    print(onion)

try:
    양파키우기("착한 말")
    양파키우기("나쁜 말")

except MyError:
    print("양파가 아파요ㅜㅜ")

<출력값>

착한 말
양파가 아파요ㅜㅜ

 

 

오류메시지를 사용하여 예외처리를 하면 다음과 같다.

이때 오류메시지를 출력하려면 오류 클래스에 __str__ 메소드를 구현해야 한다.

__str__ 메소드는 오류 메시지를 print문으로 출력할 경우에 호출되는 메소드이다.

class  MyError(Exception):
    def __str__(self):
        return "양파가 아파요ㅜㅜ"

def 양파키우기(onion):
    if onion == '나쁜 말':
        raise MyError()
    print(onion)

try:
    양파키우기("착한 말")
    양파키우기("나쁜 말")

except MyError as e:
    print(e)

<출력값>

착한 말
양파가 아파요ㅜㅜ

 

 

 

2.

코딩에서 except A는 영어에서의 Except A와는 다르게 해석해야 할 것 같다.

영어에서의 Except A는 'A를 제외하고'의 의미라면

코딩에서의 except A는 ''예외적으로 A는 ~"의 의미로 해석해야겠다.

코딩할 때 except가 나오면 '예외적으로'라고 해석하자.

 


3.

encryption: 암호화

 

 

[교재]

https://wikidocs.net/book/1

 

점프 투 파이썬

** 점프 투 파이썬 오프라인 책(개정판) 출간 !! (2019.06) ** * [책 구입 안내](https://wikidocs.net/4321) 이 책은 파이썬 ...

wikidocs.net

 

'Python' 카테고리의 다른 글

220211 학습일기  (0) 2022.02.11
220210  (0) 2022.02.11
220208 학습일기  (0) 2022.02.09
220206 학습일기  (0) 2022.02.07
220203 학습일기  (0) 2022.02.06