티스토리 뷰
일반적인 언어에서 예외처리는 try catch로 매핑되지만 python에서는 try except를 사용한다.
파일입출력이나 시리얼통신에 많이 사용되는데 시리얼통신을 할 경우 이 포트가 열리는 포트인지 안열리는 포트인지 잘 모르기 때문에 포트 오픈 라인에 예외처리를 해주면 포트가 열리지 않았을 경우에도 프로그램이 종료되지 않는다.
로 볼 수 있다.
시리얼통신에러의 경우 serial.serialutil.SerialException 라는 에러를 발생시키는데 에러가 발생했을 경우 메시지를 보고 싶으면 다음과 같이 입력한다.
예외종류에는
ZeroDivisionError
NameError
TypeError
KeyError
IOError
IndexError
AttributeError
등이 있다.
확인방법은 try를 지우고 에러를 발생시키면 된다.
또한 serial 소스를 분석하다 보면
다음과 같이 raise를 사용한 것을 볼 수 있는 데 이것은 의도적으로 예외를 발생시키는 경우이다.
파일입출력이나 시리얼통신에 많이 사용되는데 시리얼통신을 할 경우 이 포트가 열리는 포트인지 안열리는 포트인지 잘 모르기 때문에 포트 오픈 라인에 예외처리를 해주면 포트가 열리지 않았을 경우에도 프로그램이 종료되지 않는다.
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