티스토리 뷰

Programming Languages/Python

Python 예외처리 Try

sw편한세상 2011. 7. 27. 05:37
일반적인 언어에서 예외처리는 try catch로 매핑되지만 python에서는 try except를 사용한다.

파일입출력이나 시리얼통신에 많이 사용되는데 시리얼통신을 할 경우 이 포트가 열리는 포트인지 안열리는 포트인지 잘 모르기 때문에 포트 오픈 라인에 예외처리를 해주면 포트가 열리지 않았을 경우에도 프로그램이 종료되지 않는다.


try:
	예외가 발생할만한 문구

except 예외종류, 예외변수: #예외 종류, 변수는 생략가능
	예외 발생시 실행되는 문구

else:
	예외가 발생하지 않았을 때 실행되는 문구

finally:
	예외 방생 여부에 상관하지 않고 실행되는 문구


 
로 볼 수 있다.
시리얼통신에러의 경우 serial.serialutil.SerialException 라는 에러를 발생시키는데 에러가 발생했을 경우 메시지를 보고 싶으면 다음과 같이 입력한다.
# Python Serial 예외처리 예

try:
	port = serial.Serial(5, 9600)
	port.write("초기화패킷")		
except serial.serialutil.SerialException, e:
	print e

else:
	print port


예외종류에는

ZeroDivisionError
NameError
TypeError
KeyError
IOError
IndexError
AttributeError

등이 있다. 
확인방법은 try를 지우고 에러를 발생시키면 된다.

또한 serial 소스를 분석하다 보면
if self.hComPort == win32.INVALID_HANDLE_VALUE:
	self.hComPort = None    # 'cause __del__ is called anyway
	raise SerialException("could not open port %s: %s" % (self.portstr, ctypes.WinError()))

다음과 같이 raise를 사용한 것을 볼 수 있는 데 이것은 의도적으로 예외를 발생시키는 경우이다.

'Programming Languages > Python' 카테고리의 다른 글

Python 쓰레드(Thread)  (0) 2011.08.01
Python for loop 와 while loop  (0) 2011.08.01
Python 리스트 조건 제시법  (1) 2011.07.24
Pywin32 및 Pyserial Downloads  (0) 2010.10.08
Panda3D 시작화면 조정하기.  (1) 2010.04.02
댓글
11-22 05:40
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday