파이썬 오류 및 예외 개념(일반)
1. 오류 및 예외 처리 방법
a: NameError
참인 경우: SyntaxError
f = oepn('1.txt'): IOError
10/0: ZeropisionError
a = int('d'): ValueError
프로그램 실행 중 중단: KeyboardInterrupt
try: try_suite except Exception [e]: exception_block
try는 try_suite에서 오류를 캡처하는 데 사용됩니다. 예외 처리를 위해 오류 처리
예외 처리가 캡처된 예외 설정과 일치하는 경우, 예외 처리를 위해 예외_블록을 사용하세요
# case 1 try: undef except: print 'catch an except'rrree
case1: 런타임 오류이므로 예외를 catch할 수 있습니다
case2: 구문 오류이고 사전 오류이므로 예외를 catch할 수 없습니다. -run error
--
# case 2 try: if undef except: print 'catch an except'
# case 3 try: undef except NameError,e: print 'catch an except',e
case3: 캡처 설정 NameError 예외로 인해 예외가 catch될 수 있음
case4: IOError를 설정하면 NameError를 처리하지 않으므로 예외를 포착할 수 없습니다
# case 4 try: undef except IOError,e: print 'catch an except',e
try -Exception: 여러 예외 처리
import random num = random.randint(0, 100) while True: try: guess = int(raw_input("Enter 1~100")) except ValueError, e: print "Enter 1~100" continue if guess > num: print "guess Bigger:", guess elif guess < num: print "guess Smaller:", guess elif guess == num: print "Guess OK,Game Over" break print '\n'
try: try_suite except Exception1[e]: exception_block1 except Exception2[e]: exception_block2 except ExceptionN[e]: exception_blockN
try: try_suite finally: do_finally
try: try_suite except: do_except finally: do_finally
및 __enter__()
이 프로토콜을 지원하는 개체는 __exit()__
메서드를 호출합니다. as var 문이 설정된 경우 var 변수는 __enter__
메서드를 허용합니다. 반환 값 __enter__()
메소드 __exit__
with context [as var]: with_suite
class Mycontex(object): def __init__(self, name): self.name = name def __enter__(self): print "__enter__" return self def do_self(self): print "do_self" def __exit__(self, exc_type, exc_val, exc_tb): print "__exit__" print "Error:", exc_type, " info:", exc_val if __name__ == "__main__": with Mycontex('test context') as f: print f.name f.do_self()
raise TypeError, 'Test Error'
raise IOError, 'File Not Exit'
assert 0, 'test assert'2. Python 표준 예외 및 사용자 정의 예외
assert 4==5, 'test assert'