본문 바로가기
Python/파이썬 기초

예외처리(try구문)와 예외발생(raise구문) - 파이썬 기초(27)

by 콩돌 2019. 1. 10.
반응형

참고 자료

https://docs.python.org/ko/3/tutorial/errors.html

https://docs.python.org/ko/3/reference/compound_stmts.html

https://docs.python.org/ko/3/reference/simple_stmts.html


파이썬 버전 3.7 기준



파이썬의 try구문과 raise구문 


본 포스팅에서 다루는 내용은 다음과 같다.

try 구문, raise 구문 등.


파이썬에서는 예외가 발생했을 시에 이에 대해 대응을 하는 것이 가능하며, 이는 try구문을 통해 구현된다.

또한, 예외를 강제적으로 일으키는 것도 가능하며, 이때 raise 구문이 이용된다.


try 구문

  ○ try 구문은 파이썬에서 발생하는 예외를 처리할 수 있도록 지원하는 구문이다.


try 구문의 형식

  ○ try 구문의 구성은 아래 형식과 같다.

    ▷ try절

      - 예외가 발생할 것으로 예상되어 한번 시도해볼만한 내용을 try절에 작성하면 된다.

      - "try:"를 작성함으로써 try절을 선언하며, 실행될 내용을 해당 구문 안에 작성하면 된다.

    ▷ except절

      - try구문에서의 발생한 예외를 처리하기 위해 except 절이 존재한다.

      - "except 예외명:" 을 작성함으로써 except절을 선언하며, 해당 예외가 발생할 경우 수행될 내용을 작성하면된다.

      - except절에서 예외명은 생략될 수 있고, 생략될 경우에는 try절에서 발생된 모든 예외에 대해 후속조치를 수행할 수 있게 한다. 하지만 발생된 예외가 무언지 알 수 없게 만드므로 사용에 주의를 요한다.

    ▷ else절
      - 다른 구문들과 마찬가지로 else 절도 역시 적용이 가능하다. 
      - 이는 예외가 발생하지 않을 경우 실행되므로, 예외가 발생하지 않을 때만 실행될 내용을 작성하여 사용하면 된다.

    ▷ finally절

      - finally절은 try 구문(try절 및 except절 포함)이 완료되면 무조건 실행하는 절이며 생략이 가능하다.

      - 즉, 예외가 발생안하여 try 구문이 잘 마무리되도 해당 절은 수행되며 예외가 발생하여 except절을 수행하더라도 해당 절의 내용은 수행된다.

      - "finally:"를 통해 finally절을 선언하며, 이 경우 실행될 내용을 작성하면 된다.


try 구문의 형식)

try :

    내용1

except 예외명1:

    내용2

except 예외명2:

    내용3

...

else

    내용4

finally:

    내용5


try구문의 작동 순서

  ○ 예외가 발생하지 않을 경우 try구문의 작동 순서는 다음과 같다. 

    ① try 구문에 포함되어있는 내용 1을 작동시킨다.

    ② 예외가 발생하지 않았으므로 except 절에 포함되어있는 내용들은 실행하지 않고 바로 else 절의 내용4를 수행한다.

      - else절은 생략이 가능하며, 이 경우 바로 ③으로 간다.

    ③ finally 절에 있는 내용5를 실행시킨다.


  ○ 예외가 발생할 경우 try구문의 작동 순서는 다음과 같다. 

    ① try 구문에 포함되어있는 내용 1을 작동시킨다.

    ② 내용 1에서 발생한 예외를 except 절들의 예외명과 대조하여 같은 예외명을 가지는지 검사한다.

      - 이 때 예외명을 대조하는 순서는 위에서 아랫 방향으로 진행된다.

    ③ 내용 1에서 발생한 예외와 except 절의 예외명이 같다면 해당 except 절의 내용을 실행한다.

      - 만약 발생한 예외가 except절에서 제시하는 예외명들과 일치하지 않는다면 그 자리에서 예외발생으로 파이썬 프로그램 자체를 종결시킨다.

      - 단, 위에 설명한 것과 같이 except 절에 예외명을 입력하지 않고 단지 "except:"라고만 입력할 경우 어떤 예외던 간에 해당 except 절의 내용을 실행시킨다. 

    ④ 이 후 finally 절의 내용5를 실행시킨다.



raise 구문

  ○ raise 구문은 파이썬에서 강제로 예외를 발생시킬 필요가 있을 때 사용하는 구문이다.

  ○ 코드 구조를 작성하는 중에 함수나 클래스에 내용을 형식만 만들어 두었고 나중에 작성하는 것을 상기시키기 위해 사용하기도 한다.

  ○ raise 구문의 형식은 아래와 같이 나타나있다.

    ▷ 예외명을 입력하지 않으면 RuntimeError가 발생한다.


raise 구문의 형식)

raise 예외명



반응형

댓글