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: 암호화
[교재]
'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 |