AboutPython

[파이썬] Exception, raise 키워드

scone 2022. 5. 5. 14:10

[Exception]

  • 예외 담당 클래스를 말합니다.
  • 어떤 예외가 발생했는지 알 수 있습니다.
num1 = int(input('정수입력 : '))
num2 = int(input('정수입력 : '))

try :
    print(f'num1/num2 : {num1/num2}')
except Exception as e:                        # e에 어떤 예외인지 할당
    print('오류가 발생하였습니다.')
    print(f'exception : {e}')
print(f'num1+num2 = {num1+num2}')
print(f'num1-num2 = {num1-num2}')
'''
정수입력 : 3
정수입력 : 0
오류가 발생하였습니다.
exception : division by zero
num1+num2 = 3
num1-num2 = 3
'''

다음과 같이 어떤 오류인지가 e에 할당되어, 프린트 할 수 있습니다.


[raise] ; 강제적 예외 발생

  • .raise 키워드를 사용하면 예외를 발생시킬 수 있다.
    내가 일으킨 에러이기 때문에, 에러 이름은 내 마음대로 출력가능하다.
def div(n1,n2):
    if n2 != 0:
        print(f'n1/n2 = {n1/n2}')
    else :
        raise Exception('이처럼 에러날 때 내가 원하는 문구를 출력할 수 있습니다.')

n1 = int(input('input number1 : '))
n2 = int(input('input number2 : '))

try : 
    div(n1,n2)
except Exception as e :
    print(f'exception : {e}')
'''
input number1 : 10
input number2 : 0
exception : 이처럼 에러날 때 내가 원하는 문구를 출력할 수 있습니다.
'''

[실습1] 10글자 초과하면 MMS로 전환, 10글자 이내면 SMS로 전환하는 프로그램을 만들어보자.

  • raise Exception( 0, 1 ) 과 같이 Exception에 args를 두개를 줄 수 있다.
    Exception 에 요소에 대한 접근은 Exception.args[i] 로 한다.
# 10글자 초과하면 MMS로 전환, 10글자 이내면 SMS로 전환하는 프로그램을 만들어보자.

def MMS(msg):
    if len(msg) <= 10 :
        raise Exception('10글자 이하 입니다. SMS로 전환해주세요.',1)
    else:
        print('msg 발송!')
def SMS(msg):
    if len(msg) >= 10 :
        raise Exception('10글자 이상 입니다. MMS로 전환해주세요.',2)
    else:
        print('MMS 발송!')

msg = input('보낼 메세지 : ')
try : 
    MMS(msg)
except Exception as e :
    print(f'Exception :{e.args[1]}번 에러입니다. {e.args[0]}')
    if e.args[1] == 1 :
        SMS(msg)
    elif e.args[1] == 2 :
        MMS(msg)
'''
PS C:\Users\Jupiter\Desktop\mygit\LearnInZeroBase> & C:/Users/Jupiter/AppData/Local/Programs/Python/Python310/python.exe "c:/Users/Jupiter/Desktop/mygit/LearnInZeroBase/파이썬 중급/20_raise실습.py"
보낼 메세지 : hi
Exception :1번 에러입니다. 10글자 이하 입니다. SMS로 전환해주세요.
MMS 발송!

PS C:\Users\Jupiter\Desktop\mygit\LearnInZeroBase> & C:/Users/Jupiter/AppData/Local/Programs/Python/Python310/python.exe "c:/Users/Jupiter/Desktop/mygit/LearnInZeroBase/파이썬 중급/20_raise실습.py"
보낼 메세지 : hi hello my name is scone. are you there?
msg 발송!
'''