예외처리는 잘못된 동작 시 오류를 발생하는데 이런 오류를 무시하거나 오류를 처리할 수 있게 하는 기능
try:
내용
내용
except:
오류처리내용
try:
내용
내용
except 발생 오류:
오류처리내용
try:
내용
내용
except 발생 오류 as 발생 오류 변수:
오류처리내용
# 예외처리
try:
print("나누기 전용 계산기입니다")
nums = []
nums.append(int(input("첫 번째 숫자를 입력하세요 : ")))
nums.append(int(input("두 번째 숫자를 입력하세요 : ")))
nums.append(int(nums[0] / nums[1]))
print("{0} / {1} = {2}".format(nums[0], nums[1], nums[2]))
except ValueError: # 값을 잘못 입력시 발생하는 오류
print("에러가 발생했습니다")
except ZeroDivisionError as err: # 0으로 나눌수 없다는 오류
print(err)
except Exception as err: # 위에 2가지 에러 외 다른 에러처리는 여기서 처리
print("알 수 없는 에러가 발생하였습니다.")
print(err)
raise 발생오류
# 중간에 오류 발생시 작동하게 하는 방법
try:
print("한 자리 숫자 나누기 전용 계산기입니다.")
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
if num1 >= 10 or num2 >= 10:
raise ValueError # 특정 에러 발생시 except 로 넘어감 즉 밑에 문장은 실행 되지 않는다.
print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
except ValueError:
print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
pass 이용
try:
print("나누기 전용 계산기입니다")
nums = []
nums.append(int(input("첫 번째 숫자를 입력하세요 : ")))
nums.append(int(input("두 번째 숫자를 입력하세요 : ")))
nums.append(int(nums[0] / nums[1]))
print("{0} / {1} = {2}".format(nums[0], nums[1], nums[2]))
except: # 모든 에러는 넘긴다.
pass
class BigNumberError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try:
print("한 자리 숫자 나누기 전용 계산기입니다.")
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
if num1 >= 10 or num2 >= 10:
raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))
print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
except ValueError:
print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
except BigNumberError as err:
print("에러가 발생하였습니다. 한 자리 숫자만 입력하세요.")
print(err)
잘 작동하든 예외 처리하든 상관없이 무조건 실행되는 구문
class BigNumberError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try:
print("한 자리 숫자 나누기 전용 계산기입니다.")
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
if num1 >= 10 or num2 >= 10:
raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))
print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
except ValueError:
print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
except BigNumberError as err:
print("에러가 발생하였습니다. 한 자리 숫자만 입력하세요.")
print(err)
# 무조건 실행하는 구문
finally:
print("계산기를 이용해 주셔서 감사합니다.")