728x90

<예외>

- 프로그래밍 언어의 오류

 · 구문 오류(Syntax Error): 프로그램 실행 전에 발생하는 오류, 이클립스 파이참 등 통합개발환경 도구에서는 자동으로 실행 전에 오류 체크함

 · 논리적 오류(Logical Error) 혹은 런타임 오류(Runtime Error): 프로그램 실행 중에 발생하는 오류, 문법적으로 틀린 것이 없으므로 즉시 인식되지 않지만 의도치 않은 결과를 초래할 수 있음 

- 파이썬 내장 예외 종류: https://docs.python.org/3/library/exceptions.html

 

<예외 처리 방법>

- try, except 구문: 예외가 발생할 수 있는 상황을 예상하여 예외를 제어할 수 있음

 · try: (예외 발생 가능한) 일반적인 수행문들

 · except: 예외가 발생하였을 때 수행문들

  cf) 예외를 그냥 넘어가고 싶은 경우 pass 키워드 사용

  ex) except :

            pass

 · else를 같이 사용하면 예외가 발생하지 않았을 때 실행할 코드를 지정할 수 있음: 예외가 발생할 수 있는 코드만 try에 넣어서 활용(가독성, 유지보수 향상)

 · finally: 예외 발생 유무 관계 없이 실행되는 코드를 작성할 수 있음

 

- try, except 구문 규칙

 · try 구문은 단독으로 사용할 수 없음

 · else 구문은 반드시 except 구문 뒤에 와야 함

 · 아래 조합 외에는 오류 발생

   try + except

   try + except + else

   try + except + finally

   try + except + else + finally

   try + finally

 

 <예외 객체>

: 예외가 발생하면, 예외와 관련된 정보가 생성(예외 객체로 활용 가능)

   try:

         (예외 발생 가능한) 일반적인 수행문들

   except 예외의 종류 as 예외 객체를 활용할 변수:

         예외가 발생했을 때 수행문들

 cf) 예외의 종류를 모르겠다면 exception(모든 예외 포함)

 

- 예외 구분: 예외 객체를 활용해 조건문처럼 예외 종류에 따라 다른 코딩을 할 수 있음

  try:

        (예외 발생 가능한) 일반적인 수행문들

  except 예외 종류A:

           예외가 발생했을 때 수행문들

  except 예외 종류B:

           예외가 발생했을 때 수행문들

  except 예외 종류C:

           예외가 발생했을 때 수행문들

 

- 예외 구분의 잘못된 예

 · 예외 처리의 순서(예외의 포함 관계)

 ex) Arithmetic > ZeroDivision

 

<강제로 예외 발생시키기>

: raise 예외 종류 (메시지)

 · 사용자 정의 클래스를 만들 때(연산자 오버로딩 등)

 · 아직 구현이 덜 된 코드

 · 그 외 문법적으로 정상적인 코드지만 예외 처리가 필요한 경우

728x90

+ Recent posts