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 발송!
'''