이롭게 현명하게

[Python] 파이썬 예외처리 본문

Python

[Python] 파이썬 예외처리

dev_y.h 2023. 4. 4. 18:01
728x90
반응형

※ 본 포스팅은 윈도우 11, Pycharm, Python3 환경에서 작성되었습니다.


 

목차

 

오류 예외 처리 기법

오류 회피하기

오류 발생시키기

예외 만들기

 


 


[오류 예외 처리 기법]

  1. try, except문
  2. try ... finally
  3. 여러 개의 오류 처리하기
  4. try ... else

 

1. try except문

try 블록 : 

except : try  블록 수행 중 오류가 발생하면 수행된다.

[ ] : 생략 가능

except : 오류 종류에 상관없이 오류가 발생하면  except 블록 수행

except 발생오류 : 오류가 발생했을 때 except 문에 미리 정해 놓은 오류와 동일한 오류일 경우에만 except 블록을 수행

except 발생오류 as 오류변수 : 미리 정해놓은 오류와 오류의 내용까지 알고 싶을 때 사용

try:
    ...
except [발생오류 [as 오류변수]]:
    ...

 

2. try ... finally

try 문에는 finally 절을 사용할 수 있다.

finally : try문 수행 도중 예외 발생 여부와 상관없이 항상 수행된다.

보통 사용한 리소스를 close 할 때 많이 사용한다.

try:
    f = open('foo.txt','w')
    수행할 문장
    수행할 문장
    ...
finally:
    f.close() # 중간에 오류가 발생하더라도 무조건 실행된다.

 

3. 여러 개의 오류 처리하기

try문 안에서 여러 개의 오류를 처리할 때 사용한다.

try:
    ...
except 발생오류1:
    ...
except 발생오류2:
    ...
except 발생오류3 as e:
    ...

 

4. try ... else

try문 수행 중 오류가 발생하면 except절이 수행된고 오류가 없으면 else 절이 수행된다.

try:
    ...
except [발생오류 [as 오류변수]] : 
    ...
else : # 오류가 없을 경우에만 수행된다.
    ...

 

 


[오류 회피하기]

특정 오류가 발생할 경우 그냥 통과시켜야 할 때 pass를 사용하면 통과시킬 수 있다.

try:
    f = open('null.txt','w')
except FileNotFoundError :
    pass

[오류 발생시키기]

프로그래밍을 하다 보면 종종 오류를 일부러 발생시켜야 할 경우가 생긴다.

파이썬은 raise 명령어를 사용해 오류를 강제로 발생시킬 수 있다.

NotImplementedError는 파이썬에 이미 정의되어 있는 오류로, 꼭 작성해야 하는 부분이 구현되지 않았을 경우 일부러 오류를 일으키기 위해 사용한다.
class Car:
    def fly(self):
        raise NotImplementedError

class SUV(Car):
    pass

s = SUV()
s.fly()

'''

Traceback (most recent call last):
  File "C:\test.py", line 9, in <module>
    s.fly()
  File "C:\test.py", line 3, in fly
    raise NotImplementedError
NotImplementedError

'''

SUV 클래스는 Car 클래스를 상속받았다.

그런데 SUV클래스는 fly 메서드를 오버라이딩하여 구현하지 않았다.

따라서 s객체의 fly 메서드를 수행하는 순간 Car 클래스의 fly 메서드가 수행되어 NotImplementedError가 발생한다.

 

NotImplementedError가 발생되지 않게 하려면 다음과 같이 SUV에 fly함수를 구현해야 한다.

class Car:
    def fly(self):
        raise NotImplementedError

class SUV(Car):
    def fly(self):
        print("very fast")

s = SUV()
s.fly()

[예외 만들기]

프로그램 수행 도중 특수한 경우에만 예외처리를 하기 위해서 종종 예외를 만들어서 사용한다.

사용자가 직접 예외를 만들 수 있다.

__str__ : 오류 메시지를 print문으로 출력할 경우에 호출되는 메서드

class MyError(Exception):
    def __str__(self):
        return "허용 되지 않는 별명입니다."


def say_nick(nick):
    if nick == "바보":
        raise MyError()
    print(nick)

try:
    say_nick("천사")
    say_nick("바보")
except MyError as e:
    print(e)

 

 

 

 

[Python] 파이썬 내장 함수

코드 설명 abs(x) x값의 절댓값을 리턴 all(x) 반복 가능한 값을 입력 값x로 받으며 이 값의 요소가 모두 참이면 True, 거짓이면 False를 리턴 반복 가능한 데이터 : for 문에서 사용 가능한 자료형을 의

devyihyun.tistory.com


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

 

728x90
반응형

'Python' 카테고리의 다른 글

[Python] 파이썬 표준 라이브러리  (0) 2023.04.06
[Python] 파이썬 내장 함수  (0) 2023.04.05
[Python] 파이썬 패키지  (0) 2023.04.03
[Python] 파이썬 모듈  (0) 2023.03.31
[Python] 파이썬 클래스  (0) 2023.03.30
Comments