16. 예외 처리
페이지정보
내용
예외 처리 ( try ~ except)
프로그램을 만들면 오류가 생기기 마련이다.
프로그램을 실행시킬때 컴파일러는 오류가 생기면 무슨 오류가 어느 곳에서 발생했는지 친절하게 알려준다.
오류 메시지만 잘 확인해도 대부분의 버그는 고칠 수 있다.
그리고 프로그램이 지속적으로 실행되다보면 입력되는 데이터가 문제가 생긴다던가, 데이터의 타입이 일정치 않다던가 하는 문제로 어쩔 수 없이 오류가 발생하는 경우가 있다.
파이썬은 인터프리터 언어이므로 코드가 순차적으로 진행되다가 오류를 만나면 이후의 코드는 실행되지 않는다.
소위 말하는 먹통이 되거나, 프로그램 자체가 종료된다.
따라서 이럴 경우 예외 처리를 해줌으로 인해서 오류가 난 부분을 처리해줘야만 프로그램이 지속적으로 실행이 가능하게 된다.
오류를 처리하는 구문은
try ~ except 구문이다.
사용방법
try: 실행 코드 except: 오류 생긴 후 실행할 코드 |
오류가 발생하는 경우
print("사람이 먼저다" + 10) |
Traceback (most recent call last): File "C:\JBMPA\lecture\tryexcept.py", line 4, in <module> print("사람이 먼저다" + 10) TypeError: can only concatenate str (not "int") to str |
오류 메시지를 보면 TypeError 이다. 즉 문자와 숫자를 합칠 수 없다는 메시지이다.
이 오류를 고치기 위해서는 10이라는 숫자를 str(10)과 같이 문자열로 변환하면 되지만, 예외(오류) 처리를 연습해본다.
오류 처리
try: |
에러 발생 |
위의 예외 처리에서 우리는 에러가 나는 이유를 TypeError라고 알고 있기 때문에 오류의 종류를 TypeError 라고 명시했다. 이는 TypeError 오류만 처리를 해준다.
하지만 어떤 오류가 날지 모를때는 오류 타입을 명시하지 않고 사용하면 된다.
오류 타입 없이 처리
try: print("사람이 먼저다" + 10) except: print("에러 발생") |
에러 발생 |
오류 메시지를 따로 확인하고 싶다면, 오류 메시지 변수를 사용할 수 있다.
오류 타입을 지정하여 메시지를 표시하는 방법
try: print(e) |
can only concatenate str (not "int") to str 에러 발생 |
오류 타입 없이 메시지를 표시하는 방법
try: print(e) |
can only concatenate str (not "int") to str 에러 발생 |
try ~ finally
try 구문을 실행하면서 오류 발생과 관계없이 항상 수행되는 코드를 만들 수 있다. try와 finally를 사용하면 된다.
try: print("사람이 먼저다" + 10) except Exception as e: print(e) print("에러 발생") finally: print("항상 실행") |
can only concatenate str (not "int") to str 에러 발생 항상 실행 |
오류 처리는 여러 개의 오류를 지정하여 처리할 수 있다.
try: print("사람이 먼저다" + 10) except TypeError as e: print(e) print("타입 에러 발생") except SyntaxError as e: print(e) print("구문 에러 발생") except Exception as e: print(e) finally: print("항상 실행") |
can only concatenate str (not "int") to str 타입 에러 발생 항상 실행 |
만약 오류 발생시 아무 것도 안하고 오류 부분을 넘기고 싶다면, pass를 입력하면 된다.
try: pass |