try:
코드블록
except [예외_타입 [ as 예외_변수]]
예외 처리 코드
[else:
예외 발생하지 않은 경우 수행할 코드
finally:
예외 발생유무 상관없이 try 블럭이 종료될대
- [ as 예외_변수] 가 있어야 변수로 받아 처리가 가능하다.
- default except(예외 타입이 없는 경우) 블럭은 마지막에 위치 되어야 한다.
예외발생 시키기
raise[예외]
raise[예외(데이터)]
Exception Class
Exception (*args, **kwargs)
- args[0] 이 예외 메시지이다
- 가변인자 args
- 정의되지 않은 인자 kwargs
- 매개변수를 아예 안 넘겨도 된다
예를들어
raise TypeError (''타입 오류입니다.", "이것은 예제 입니다.")
위와 같이 예외를 발생시키면,
아래와 같이 args에 tuple로 위 에러 메시지가 들어가게 된다.
except TypeError as e:
print(e.args)
파이썬의 예외처리의 기본은 예외가 발생한 메소드 안에서 처리하는게 기본이지만,
만약에 메소드안에서 예외처리를 안한 경우에는
메소드를 호출한 쪽으로 넘겨주게 된다. (메소드를 호출한 쪽에서 try 구문으로 예외처리를 하면 된다)
결국 사용자 exception class를 만들때 기보이 되는 Exception Class 의 format에 맞게 작성이 되야 한다
사용자 정의 예외
위 예제는 잘못된 사용 방법이다.
위에서 예기 했듯이 기본 Exception 의 생성자에서는 *args 와 **kwargs 를 받게 되어 있는데 위 예제에서는 msg를 하나만 받아서 저장하고 있다
올바르게 수정해보자
여기서 또 중요한건 가변인자 나 정의되지 않은 인자를 넘길때는 * 를 붙여서 넘겨줘야 한다.
'ⓟrogramming > Python' 카테고리의 다른 글
[Python] 계좌 입출력 프로젝트 (0) | 2016.10.14 |
---|---|
[Python] 파이썬 키워드 (0) | 2016.10.14 |
[Python] 직렬화 그리고 역직렬화 (0) | 2016.10.14 |
[Python] File input/out - 파일 입출력 (0) | 2016.10.14 |
[Python] datetime (0) | 2016.10.14 |