본문 바로가기

Python

[Python/파이썬] 예외 처리, 에러 발생시키기, 사용자 정의 에러, finally

반응형

 

 

 

토글

 

 

 

 

예외 처리(Exception Handling)

- 파이썬에서 예외 처리는 try와 except를 사용하여 구현한다.

- try 블록 안에는 에러가 발생할 가능성이 있는 코드를 배치하고

- except 블록에서는 해당 에러를 처리하는 방법을 명시한다.

try:
    # 에러가 발생할 가능성이 있는 코드
except 예외 종류:
    # 에러 처리 방법

 

 예외 처리 예시

try:
    print("나누기 전용 계산기입니다.")
    nums = []
    nums.append(int(input("첫 번째 숫자를 입력하세요 : ")))
    nums.append(int(input("두 번째 숫자를 입력하세요 : ")))
    print("{0} / {1} = {2}".format(nums[0], nums[1], nums[0] / nums[1]))
except ValueError:
    print("에러! 잘못된 값을 입력하셨습니다.")
except ZeroDivisionError as err:
    print(err)
except Exception as err:  
    print("알 수 없는 에러가 발생하였습니다.")
    print(err)

 

위 코드에서 에러가 발생할 가능성이 있는 부분을 try 블록 안에 넣고

발생할 수 있는 에러 종류별로 except 블록을 통해 처리한다.

 

 

 


 

에러 발생시키기(Rasing Errors)

- 가끔은 프로그램에서 예외를 강제로 발생시켜야 할 때가 있다.

- 이때 raise를 사용하여 원하는 예외를 발생시킬 수 있다.

if num1 >= 10 or num2 >= 10:  
    raise ValueError  #예외를 강제로 발생

 

위 코드에서 두 변수 중 하나가 10 이상일 경우, ValueError 예외를 강제로 발생시킨다.

반응형

 


 

사용자 정의 에러(Custom Errors)

- 기본적인 에러 종류 외에도 사용자가 직접 에러 클래스를 정의하여 사용할 수 있다.

- 사용자 정의 에러는 Exception 클래스를 상속받아 구현된다.

class BigNumberError(Exception):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg

 

위 코드에서 BigNumberError라는 사용자 정의 에러를 만든다.

이 에러는 입력된 숫자가 큰 경우에 발생시킬 예정이다.

if num1 >= 10 or num2 >= 10:
    raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))

 

if 문 안에서 발생할 조건을 만족하면 사용자 정의 에러인 BigNumberError를 발생시킨다.

 

 


 

finally

예외 처리에서 사용되는 finally는 에러의 발생 여부와 관계없이 항상 실행되어야 할 코드를 작성하는 데 사용된다.

try:
    # 에러가 발생할 가능성이 있는 코드
except 예외 종류:
    # 에러 처리 방법
finally:
    # 에러 발생 여부와 관계없이 항상 실행되는 코드

 

finally 예시

try:
    # ...
except BigNumberError as err:
    print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
    print(err)
finally:
    print("계산기를 이용해 주셔서 감사합니다.")

 

위 코드에서 finally 블록 안에 있는 코드는 에러 발생 여부와 관계없이 항상 실행된다. 

 

 

 

 

반응형