• 회원가입
  • 로그인
  • 구글아이디로 로그인

[basic] Python - Try...Except - 에러 테스트/제어. (= 트라이...익세프트)

1009  

목차

  1. try...except...finally 정의
  2. 단일 except (= 에러 제어)
  3. 여러 except (= 에러 종류별 제어)
  4. else 키워드 - 에러 없을 시 실행 코드 정의
  5. finally 키워드 - 항상 실행할 코드 정의
  6. raise Exception (에러 수동 야기)
  7. 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.")


 


분류 제목
basic Python - Lambda (람다함수) - 작은 1회용 익명함수
basic Python - Array (배열)
basic Python - Class/Object (클래스/객체) ※ __init__() 함수
basic Python - Inheritance (상속)
basic Python - Iterator (반복자)
basic Python - Scope (범위)
basic Python - Module (모듈)
basic Python - Datetime (날짜시간) 표시
basic Python - JSON (제이슨)
basic Python - RegEx (정규식) - 정규표현식
basic Python - PIP (피프) - 패키지(모듈) 관리자
basic Python - Try...Except - 에러 테스트/제어. (= 트라이...익세프트)
basic Python - User Input (사용자 입력)
basic Python - String Format (문자열 포맷)
basic Python - Math (수학)
2/2
목록
찾아주셔서 감사합니다. Since 2012