티스토리 뷰
오류 만들기
프로그램 수행 도중 특수한 경우에만 예외처리를 하기 위해서 종종 오류를 만들어서 사용하게 된다.
직접 오류를 만들어 보자. 오류는 다음과 같이 파이썬 내장 클래스인 Exception
클래스를 상속하여 만들 수 있다.
class MyError(Exception):
pass
그리고 별명을 출력해 주는 함수를 다음과 같이 작성해 보자.
def say_nick(nick):
if nick == '바보':
raise MyError()
print(nick)
그리고 다음과 같이 say_nick 함수를 호출 해 보자.
say_nick("천사")
say_nick("바보")
실행 해 보면 다음과 같이 "천사"가 한번 출력된 후 MyError
가 발생하는 것을 알 수 있다.
천사
Traceback (most recent call last):
File "...", line 11, in <module>
say_nick("바보")
File "...", line 7, in say_nick
raise MyError()
__main__.MyError
이번에는 MyError
가 발생할 경우 예외처리기법을 이용하여 예외처리를 해 보도록 하자.
try:
say_nick("천사")
say_nick("바보")
except MyError:
print("허용되지 않는 별명입니다.")
실행 하면 다음과 같이 출력된다.
천사
허용되지 않는 별명입니다.
만약 오류메시지를 이용하고 싶다면 다음처럼 예외처리를 해야 할 것이다.
try:
say_nick("천사")
say_nick("바보")
except MyError as e:
print(e)
하지만 실행 해 보면 print(e)
로 출력한 오류메시지가 아무것도 출력되지 않는것을 확인 할 수 있다. 오류 메시지를 출력했을 때 오류 메시지가 보이게 하기 위해서는 오류 클래스에 다음과 같은 __str__
메써드를 구현해야 한다. __str__
메써드는 print(e)
처럼 오류메시지를 print문으로 출력할 경우에 호출되는 메써드이다.
class MyError(Exception):
def __str__(self):
return "허용되지 않는 별명입니다."
다시 실행해 보면 "허용되지 않는 별명입니다."라는 오류메시지가 출력되는 것을 확인할 수 있다. 만약 에러 발생시점에 오류메시지를 전달하고 싶다면 다음과 같이 수정해야 한다.
class MyError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
def say_nick(nick):
if nick == '바보':
raise MyError("허용되지 않는 별명입니다.")
print(nick)
try:
say_nick("천사")
say_nick("바보")
except MyError as e:
print(e)
raise MyError("허용되지 않는 별명입니다.")
처럼 오류 발생시점에 메시지를 전달할 수 있다.
'BackEnd > Python' 카테고리의 다른 글
[퍼옴] [점프투파이썬] 쓰레드 (0) | 2017.09.14 |
---|---|
[퍼옴] [점프투파이썬] 내장 함수 (0) | 2017.09.14 |
[퍼옴] [점프투파이썬] 패키지 (0) | 2017.09.14 |
[퍼옴] [점프투파이썬] 환경변수 및 sys를 이용한 모듈 import (0) | 2017.09.14 |
[퍼옴] [점프투파이썬] python을 shell 같이 사용해보자. (0) | 2017.09.14 |
댓글
공지사항
최근에 올라온 글
링크
TAG
- Maven
- Docker
- javascript
- executor
- mysql
- spring
- memory
- Configuration
- 파이썬
- 모두의딥러닝
- python
- AWS
- NIO
- ML
- BigData
- Gradle
- 점프투파이썬
- API
- tensorflow
- serverless
- TDD
- 중앙정보처리학원
- mybatis
- web
- 머신러닝
- Error
- 텐서플로우
- AI
- spark
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함