예외를 별도 처리함으로써 프로그램 실행에 문제가 없도록 함
예)
프로그램 실행 1
프로그램 실행 2
프로그램 실행 3 -> 예외발생 -> 중단
프로그램 실행 4
프로그램 실행 5
-> 발생한 예외에 대해서 별도 처리하고, 다음 프로그램이 계속 실행되도록 한다.
n1 = 10; n2 = 0
try:
print(n1 / n2)
except:
print('예상치 못한 문제가 발생했습니다.')
print('다음 프로그램이 정상 실행됩니다.')
print(n1 * n2)
print(n1 - n2)
print(n1 + n2)
nums = []
n = 1
while n < 6:
try:
num = int(input('input number: '))
except:
print('예외 발생')
continue
nums.append(num) #새로운 정보를 리스트에 추가 = list.append(object)
n += 1
print(f'nums: {nums}')
-->
input number: 5
input number: 1
input number: ㅂ
예외 발생
input number: 3
input number: 4
input number: 5
nums: [5, 1, 3, 4, 5]
예외가 발생하지 않은 경우에 실행하는 구문
nums = []
n = 1
while n < 6:
try:
num = int(input('input number: '))
except:
print('예외발생')
continue
else:
if num % 2 == 0:
nums.append(num)
n += 1
else:
print('홀수입니다.', end='')
print('다시 입력하세요')
continue
print(f'nums: {nums}')
= 짝수만 입력하게 하는 프로그램
eveList = []; oddList = []; floatList = []
n = 1
while n < 6:
try:
num = float(input('input number: '))
except:
print('exception raise')
print('input number again')
continue
else:
if num - int(num) != 0:
print('float number')
floatList.append(num)
else:
if num % 2 == 0:
print('even number')
eveList.append(int(num))
else:
print('odd number')
oddList.append(int(num))
n += 1
print(f'eveList: {eveList}')
print(f'oddList: {oddList}')
print(f'floatList: {floatList}')
예외의 발생과 상관없이 항상 실행한다.
네트워크를 통해 외부자원을 쓰고 있을 때, 예외 유무에 상관없이 마지막으로 꼭 자원을 해제해야할 때
try:
inputData = input('input number: ')
numInt = int(inputData)
except:
print('exception raise')
print('not number')
else:
if numInt % 2 == 0:
print('even number')
else:
print('odd number')
finally:
print(f'inputData : {inputData}')
-->
input number: 0
even number
inputData : 0
evenList = []; oddList = []; floatList = []; dataList = []
n = 1
while n < 6:
try:
data = input('input number: ')
floatNum = float(data)
except:
print('exception raise')
print('not number')
continue
else:
if floatNum - int(floatNum) != 0:
print('float number')
floatList.append(floatNum)
else:
if floatNum % 2 == 0:
print('even number')
evenList.append(int(floatNum))
else:
print('odd number')
oddList.append(int(floatNum))
n += 1
finally:
dataList.append(data)
print(f'evenList: {evenList}')
print(f'oddList: {oddList}')
print(f'floatList: {floatList}')
print(f'dataList: {dataList}')
Exception는 예외를 담당하는 클래스이다.
num1 = int(input('input number1: '))
num2 = int(input('input number2: '))
try:
print(f'num1 / num2 = {num1 / num2}')
except Exception as e:
# print('0으로 나눌 수 없습니다.')
print(f'exception: {e}')
print(f'num1 + num2 = {num1 + num2}')
print(f'num1 - num2 = {num1 - num2}')
print(f'num1 * num2 = {num1 * num2}')
-->
input number1: 10
input number2: 0
exception: division by zero
num1 + num2 = 10
num1 - num2 = 10
num1 * num2 = 0
def divCalculator(n1, n2):
if n2 != 0:
print(f'{n1} / {n2} = {n1 / n2}')
else:
raise Exception('0으로 나눌 수 없습니다.')
num1 = int(input('input number1: '))
num2 = int(input('input number2: '))
try:
divCalculator(num1, num2)
except Exception as e:
print(f'Exception: {e}')
# raise로 설정한 문구 그대로 나옴
-->
input number1: 10
input number2: 0
Exception: 0으로 나눌 수 없습니다.
def sendSMS(msg):
if len(msg) > 10:
raise Exception('길이 초과! MMS 전환 후 발송', 1)
else:
print('SMS 발송')
def sendMMS(msg):
if len(msg) <= 10:
raise Exception('길이 미달! SMS 전환 후 발송', 2)
else:
print('MMS 발송')
msg = input('input message: ')
try:
sendSMS(msg)
except Exception as e:
print(f'e: {e.args[0]}')
print(f'e: {e.args[1]}')
if e.args[1] == 1:
sendMMS(msg)
elif e.args[1] == 2:
sendSMS(msg)