목차
try...except...finally 정의
단일 except (= 에러 제어)
여러 except (= 에러 종류별 제어)
else 키워드 - 에러 없을 시 실행 코드 정의
finally 키워드 - 항상 실행할 코드 정의
raise Exception (에러 수동 야기)
try...except...finally 구문에서 에러 별칭 사용
try...except...finally 정의
try
코드 블럭 에러 테스트.
except
에러 제어. (= 에러 발생 시 실행할 내용.)
finally
try...except...구문 결과와 무관하게, 코드 실행.
단일 except (= 에러 제어)
print(x) 구문이 에러 유발해서, except 구문이 실행됨.
만약, try...except... 코드 블럭 없으면, 충돌나서 에러 냄.
try:
print(x) # 에러 유발. (∵ x가 정의 안 된 상태.)
except:
print("에러 제어 사유 발생.")
여러 except (= 에러 종류별 제어)
여러 except 구문 사용해 에러 종류별로 각각 제어 가능.
※ 아래 예제 경우, except NameError: 구문이 실행됨.
try:
print(x) # 에러 유발. (∵ 변수 x 미정의 상태.)
except NameError:
print("변수 x 미정의.")
except:
print("그외 오류 발생.")
결과값: 변수 x 미정의.
else 키워드 - 에러 없을 시 실행 코드 정의
아무 에러도 발생 안 한 경우, 실행할 코드 정의.
try:
print("Homzzang.com")
except :
print("뭔가 에러 발생.")
else:
print("에러 발생 안 함.")
결과값:
Homzzang.com
에러 발생 안 함.
finally 키워드 - 항상 실행할 코드 정의
1. try 코드 블럭의 에러 발생 유무와 무관하게, 실행할 코드 정의.
try:
print(x)
except:
print("뭔가 오류 발생")
finally:
print("'try...except...' 구문 완료.")
결과값:
뭔가 오류 발생
'try...except...' 구문 완료.
2. finally는 객체를 닫고 리소스 정리할 때도 유용.
※ 객체를 안 열어두고서, 프로그램 계속 실행 가능.
try:
f = open("hz.txt")
f.write("Homzzang.com") # 읽기 전용 파일에 쓸 때 에러 발생.
except:
print("파일에 쓸 때 뭔가 오류 발생.")
finally:
f.close()
결과값: 파일에 쓸 때 뭔가 오류 발생.
raise Exception (에러 수동 야기)
1. 조건 충족시켜 에러 제어 코드 실행을 설정 가능.
x = -1
if x < 0:
raise Exception("음수는 불가. ㅡㅡ;")
2. 에러 종류와 전달할 메세지 선택도 가능.
x = "Homzzang.com"
if not type(x) is int:
raise TypeError("정수만 허용됨.")
결과값: ... TypeError: 정수만 허용됨.
try...except...finally 구문에서 에러 별칭 사용
try:
result = some_function_that_might_raise_an_error()
except SomeSpecificError as e:
# 특정 예외가 발생했을 때의 처리
print(f"An error occurred: {e} ")
except AnotherError as e:
# 다른 예외가 발생했을 때의 처리
print(f"Another error occurred: {e} ")
else:
# 예외가 발생하지 않았을 때의 처리
print("No errors occurred.")
finally:
# 예외 발생 여부와 상관없이 항상 실행되는 코드
print("Finally block.")
주소 복사
랜덤 이동
최신댓글