파이썬의 에러 및 예외 구문은 다양하게 발생한다. 아래 그림은 대표적인 파이썬의 예외 발생 클래스들이다.
🔻 기본 구문 🔻
try:
수행 코드
except:
예외 발생시 수행할 코드
특정 코드를 수행했을 때, 예외가 발생한다면 except 구문 내 코드를 실행하게 된다.
# 숫자가 아닌 자료형이 입력되면 예외 처리를 하는 프로그램
nums = []
n = 1
while n < 6:
try:
num = int(input('숫자를 입력하세요: '))
except:
# 위의 결과에서 문제가 발생했을 경우
print('예외 발생!')
continue
nums.append(num)
n += 1 # 5 + 1 = 6 이 되었을 경우, while 문을 빠져나올 수 있기 때문에 전체 데이터 개수는 5개가 된다.
print(f'nums: {nums}')
n1 = 10; n2 = 0
try: #아래 구문을 실행했을 때
print(n1 / n2)
except: #예외가 발생하면 아래를 실행
print('예상치 못한 예외가 발생했습니다.')
print('다른 프로그램 실행에는 문제가 없습니다.')
print(n1 * n2)
print(n1 + n2)
print(n1 - n2)
# 예상치 못한 예외가 발생했습니다.
#다른 프로그램 실행에는 문제가 없습니다.
#0
#10
#10
예외가 발생했을 때
수행할 구문과예외가 발생하지 않았을 때
수행할 구문을 모두 표현할 때 사용한다.
🔻 기본 구문 🔻
try:
수행 코드
except:
예외 발생 시 수행할 코드
else:
예외 발생하지 않았을 때 수행할 코드
nums = []
n = 1
while n < 6: # n 이 6개 미만일 때까지만 수행
try:
num = int(input('숫자를 입력하세요: '))
except:
print('예외 발생!')
continue
else:
if num % 2 == 0: # 입력한 숫자가 짝수라면
nums.append(num)
n += 1
else: # 홀수라면
print('짝수를 입력해주세요')
continue
odd = []
even = []
number = []
n = 1 # 전체 받은 데이터 개수를 세어줄 값 초기화
while n < 6:
try:
value = float(input('input number : '))
except:
print('exception raise!!')
print('input number again!!')
continue
else: # 들어온 입력에 int() 해줬을 때 오류가 발생하지 않았다면 -> 실수 or 정수
# 실수일 경우
if value - int(value) != 0:
print('float number!')
number.append(value)
n += 1
# 정수일 경우
else:
if int(value) % 2 != 0: # 홀수일 경우
print('odd number!')
odd.append(int(value))
n += 1
else:
print('even number!') # 짝수일 경우
even.append(int(value))
n += 1
print(f'eveList : {even}')
print(f'oddList : {odd}')
print(f'floatList : {number}')
예외 발생 여부와 상관없이
항상 실행하는 구문
을 추가할 때 사용한다.
🔻 기본 구문 🔻
odd = []
even = []
number = []
datalist = []
n = 1
while n < 6:
try:
inputVal = input('input number : ')
num = float(inputVal)
except: # 입력한 값이 문자일 경우
print('exception raise!!')
print('input number again!!')
continue
else:
if num - int(num) != 0: # 실수일 경우
print('float number!')
number.append(num)
else:
if num % 2 == 0: # 짝수일 경우
print('even number!')
even.append(int(num))
else: # 홀수일 경우
print('odd number!')
odd.append(int(num))
n += 1
finally:
datalist.append(inputVal)
print(f'eveList : {even}')
print(f'oddList : {odd}')
print(f'floatList : {number}')
print(f'dataList : {datalist}')
예외를 담당하는 내장 클래스다. 예외가 발생했을 때, 어떤 이유로 에러가 났는지를 표시하고 싶을 경우 사용한다.
일반적으로
Exception as e
처럼 별칭을 사용한다.
🔻 기본 구문 🔻
n1 = int(input('input number1 : '))
n2 = int(input('input number2 : '))
try:
print(f'n1 / n2 = {n1 / n2}')
except Exception as e:
print('0으로 나눌 수 없습니다.')
print(f'exception error : {e}')
print(f'n1 + n2 = {n1 + n2}')
print(f'n1 * n2 = {n1 * n2}')
print(f'n1 - n2 = {n1 - n2}')
강제로 예외를 발생시킬 수도 있다. 이럴 경우,
raise
함수를 사용한다.
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}') # e안에 '0으로 나눌 수 없습니다.'가 들어가게 된다.
여기까지 파이썬의 중급 문법
들을 다뤄봤다. 다음에는 본격적으로 중급 문제 풀이를 진행하고, 기초 수학을 학습한 내용들을 정리해보겠다.