예상하지 못한 문제로 프로그램 실행이 어려운 상태
def add(n1, n2):
print(n1 + n2)
def sub(n1, n2):
print(n1 - n2)
def mul(n1, n2):
print(n1 * n2)
def div(n1, n2):
print(n1 / n2)
firstNum = int(input('first number: '))
secondNum = int(input('second number: '))
add(firstNum, secondNum)
sub(firstNum, secondNum)
mul(firstNum, secondNum)
div(firstNum, secondNum)
# ZeroDivisionError: division by zero
print(10 / 0)
# ValueError: invalid literal for int() with base 10: 'Hello'
int('Hello')
# IndexError: list index out of range
tempList = [1, 2, 3, 4, 5]
print(tempList[0])
print(tempList[1])
print(tempList[2])
print(tempList[3])
print(tempList[4])
print(tempList[5])
# IndentationError: unexpected indent
# if 10 <= 20:
# print('result: ', end='')
# print('10 <= 20')
# FileNotFoundError: [Errno 2] No such file or directory: 'c:/python/test.txt'
file = open('c:/python/test.txt', 'r')
----------
# 예외 처리
try:
print(10 / 0)
except:
print('예외 발생!! 예외 확인 하세요.')
발생된 예외를 별도 처리함으로써 프로그램 전체의 실행에 문제가 없도록 함.
n1= 10; n2 = 0
print(n1 / n2)
print(n1 * n2)
print(n1 - n2)
print(n1 + n2)
------
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)
n += 1
print(f'nums: {nums}')
예외가 발생하지 않은 경우에 실행하는 구문!
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!!')
numInt = 0
else:
if numInt % 2 == 0:
print('inputData is even number!!')
else:
print('inputData is odd number!!')
finally:
print(f'inputData: {inputData}')
eveList = []; oddList = []; floatList = []
dataList = []
n = 1
while n < 6:
try:
data = input('input number: ')
floatNum = float(data)
except:
print('exception raise!!')
print('input number again!!')
continue
else:
if floatNum - int(floatNum) != 0:
print('float number!')
floatList.append(floatNum)
else:
if floatNum % 2 == 0:
print('even number!')
eveList.append(int(floatNum))
else:
print('odd number')
oddList.append(int(floatNum))
n += 1
finally:
dataList.append(data)
print(f'eveList: {eveList}')
print(f'oddList: {oddList}')
print(f'floatList: {floatList}')
print(f'dataList: {dataList}')
Exception은 예외를 담당하는 클래스이다.
num1 = int(input('input numer1: '))
num2 = int(input('input numer2: '))
try:
print(f'num1 / num2 = {num1 / num2}')
except:
print('0으로 나눌 수 없습니다.')
print(f'num1 * num2 = {num1 * num2}')
print(f'num1 - num2 = {num1 - num2}')
print(f'num1 + num2 = {num1 + num2}')
num1 = int(input('input numer1: '))
num2 = int(input('input numer2: '))
try:
print(f'num1 / num2 = {num1 / num2}')
except Exception as e:
print(f'exception: {e}')
print(f'num1 * num2 = {num1 * num2}')
print(f'num1 - num2 = {num1 - num2}')
print(f'num1 + num2 = {num1 + num2}')
try:
num1 = int(input('input numer1: '))
num2 = int(input('input numer2: '))
except Exception as e:
print(f'exception: {e}')
num1 = 10
num2 = 20
try:
print(f'num1 / num2 = {num1 / num2}')
except ZeroDivisionError as e:
print(f'exception: {e}')
print(f'num1 * num2 = {num1 * num2}')
print(f'num1 - num2 = {num1 - num2}')
print(f'num1 + num2 = {num1 + num2}')
def divCalculator(n1, n2):
if n2 != 0:
print(f'{n1} / {n2} = {n1 / n2}')
else:
raise Exception('0으로 나눌 수 없습니다.')
num1 = int(input('input numer1: '))
num2 = int(input('input numer2: '))
try:
divCalculator(num1, num2)
except Exception as e:
print(f'Exception: {e}')
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)
예외 클래스를 직접 만들어보자!
class NotUseZeroException(Exception):
def __init__(self, n):
super().__init__(f'{n}은 사용할 수 없습니다!!')
def divCalculator(num1, num2):
if num2 == 0:
raise NotUseZeroException(num2)
else:
print(f'{num1} / {num2} = {num1 / num2}')
num1 = int(input('input number1: '))
num2 = int(input('input number2: '))
try:
divCalculator(num1, num2)
except NotUseZeroException as e:
print(e)
class PasswordLengthShortException(Exception):
def __init__(self, str):
super().__init__(f'{str}: 길이 5미만!!')
class PasswordLengthLongException(Exception):
def __init__(self, str):
super().__init__(f'{str}: 길이 10초과!!')
class PasswordWrongException(Exception):
def __init__(self, str):
super().__init__(f'{str} 잘못된 비밀번호!!')
adminPw = input('input admin password: ')
try:
if len(adminPw) < 5:
raise PasswordLengthShortException(adminPw)
elif len(adminPw) > 10:
raise PasswordLengthLongException(adminPw)
elif adminPw != 'admin1234':
raise PasswordWrongException(adminPw)
elif adminPw == 'admin1234':
print('빙고!')
except PasswordLengthShortException as e1:
print(e1)
except PasswordLengthLongException as e2:
print(e2)
except PasswordWrongException as e3:
print(e3)
# 변수를 선언합니다.
list_number = [52, 273, 32, 72, 100]
# try except 구문으로 예외를 처리합니다.
try:
# 숫자를 입력 받습니다.
number_input = int(input("정수 입력> "))
# 리스트의 요소를 출력합니다.
print("{}번째 요소: {}".format(number_input, list_number[number_input]))
예외.발생해주세요()
except ValueError as exception:
# ValueError가 발생하는 경우
print("정수를 입력해 주세요!")
print(type(exception), exception)
except IndexError as exception:
# IndexError가 발생하는 경우
print("리스트의 인덱스를 벗어났어요!")
print(type(exception), exception)
except Exception as exception:
# 이외의 예외가 발생한 경우
print("미리 파악하지 못한 예외가 발생했습니다.")
print(type(exception), exception)