"11. 예외처리"의 두 판 사이의 차이
(새 문서: except Exception as e: print(str(e)) 형태로 에러명을 뽑아낼 수 있다. 분류:기초) |
(→응용) |
||
(같은 사용자의 중간 판 2개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
+ | == 개요 == | ||
+ | 코드에 에러가 발생했을 때 멈추는 것이 기본적인 동작이다. 그러나 에러가 발생하면 멈추는 게 아니라 다시 실행하게 하든가, 다른 명령을 실행하게 하고 싶을 때 사용하는 구문이 try, except 문이다. | ||
+ | |||
+ | === 기본 형태 === | ||
+ | <syntaxhighlight lang="python"> | ||
+ | try: | ||
+ | 코드 | ||
+ | except: | ||
+ | 코드를 실행하다 에러가 나면 실행할 코드. | ||
+ | else: | ||
+ | 에러가 발생하지 않으면 실행할 코드. | ||
+ | finally: | ||
+ | 에러가 발생하든 안하든 실핼할 코드. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == 응용 == | ||
+ | |||
+ | === 에러를 무시하고 그냥 계~속 반복 실행하고 싶을 때 === | ||
+ | <syntaxhighlight lang="python"> | ||
+ | while 1: | ||
+ | try: | ||
+ | 코드 | ||
+ | except: | ||
+ | pass # 에러가 나면 다음 순회로 돌려 코드를 다시 실행한다.(에러 무시 무한반복) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === 에러가 발생하면 넘기되, 에러명을 뽑아내고 싶을 때 === | ||
except Exception as e: | except Exception as e: | ||
print(str(e)) 형태로 에러명을 뽑아낼 수 있다. | print(str(e)) 형태로 에러명을 뽑아낼 수 있다. | ||
+ | |||
+ | === 에러의 위치를 알고 싶을 때 === | ||
+ | 에러명을 알아도 코드가 너무 길어지면 에러의 발생 위치를 특정하기 어렵다. 그럴 땐 traceback을 사용한다.<syntaxhighlight lang="python"> | ||
+ | import traceback | ||
+ | while 1: | ||
+ | try: | ||
+ | 코드 | ||
+ | except Exception as e: # 에러가 나면 다음 순회로 돌려 코드를 다시 실행한다.(에러 무시 무한반복) | ||
+ | print(traceback.format_exc()) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === 에러에 따라 다른 처리를 하고 싶을 때 === | ||
+ | 발생하는 에러의 종류에 따라 지정할 수 있다.<syntaxhighlight lang="python"> | ||
+ | while 1: | ||
+ | try: | ||
+ | 코드 | ||
+ | except ValueError: | ||
+ | 코드 | ||
+ | except ZeroDivisionError: | ||
+ | 코드 | ||
+ | except: # 기타 에러가 발생한 경우. | ||
+ | 코드 | ||
+ | </syntaxhighlight> | ||
[[분류:기초]] | [[분류:기초]] |
2022년 6월 21일 (화) 16:10 기준 최신판
1 개요편집
코드에 에러가 발생했을 때 멈추는 것이 기본적인 동작이다. 그러나 에러가 발생하면 멈추는 게 아니라 다시 실행하게 하든가, 다른 명령을 실행하게 하고 싶을 때 사용하는 구문이 try, except 문이다.
1.1 기본 형태편집
try:
코드
except:
코드를 실행하다 에러가 나면 실행할 코드.
else:
에러가 발생하지 않으면 실행할 코드.
finally:
에러가 발생하든 안하든 실핼할 코드.
2 응용편집
2.1 에러를 무시하고 그냥 계~속 반복 실행하고 싶을 때편집
while 1:
try:
코드
except:
pass # 에러가 나면 다음 순회로 돌려 코드를 다시 실행한다.(에러 무시 무한반복)
2.2 에러가 발생하면 넘기되, 에러명을 뽑아내고 싶을 때편집
except Exception as e:
print(str(e)) 형태로 에러명을 뽑아낼 수 있다.
2.3 에러의 위치를 알고 싶을 때편집
에러명을 알아도 코드가 너무 길어지면 에러의 발생 위치를 특정하기 어렵다. 그럴 땐 traceback을 사용한다.
import traceback
while 1:
try:
코드
except Exception as e: # 에러가 나면 다음 순회로 돌려 코드를 다시 실행한다.(에러 무시 무한반복)
print(traceback.format_exc())
2.4 에러에 따라 다른 처리를 하고 싶을 때편집
발생하는 에러의 종류에 따라 지정할 수 있다.
while 1:
try:
코드
except ValueError:
코드
except ZeroDivisionError:
코드
except: # 기타 에러가 발생한 경우.
코드