반응형
예외처리란?
오류 상황에 대처하는 것이 예외 처리이다.
예외 처리하기: try-except 문
try:
실행할 명령1
실행할 명령1
...
except 오류 종류:
예외 처리 명령1
예외 처리 명령2
...
try:
print('나누기 전용 계산기')
num1 = int(input('첫 번째 수: '))
num2 = int(input('두 번째 수: '))
print(f'{num1} / {num2} = {int(num1/num2)}')
except ValueError:
print('오류 발생 잘못된 값을 입력했습니다.')
입력값에 6와 '삼' 을 넣으면 except 부분의 print() 문이 실행된다.
프로그램을 다시 실행해서 6과 0을 넣으면 다른 에러를 발생 시킨다.
ValueError와는 다른 종류의 오류라서 기존 except 문만으로는 예외 처리를 할 수 없다.
오류 메시지를 예외 처리로 출력하기: as
예외 처리마다 메시지를 직접 작성하기에는 너무 귀찮다.
try:
실행할 명령1
실행할 명령1
...
except 오류 종류:
예외 처리 명령1
예외 처리 명령2
...
except 오류 종류2 as 변수명:
예외 처리 명령1
예외 처리 명령2
...
try:
print('나누기 전용 계산기')
num1 = int(input('첫 번째 수: '))
num2 = int(input('두 번째 수: '))
print(f'{num1} / {num2} = {int(num1/num2)}')
except ValueError:
print('오류 발생 잘못된 값을 입력했습니다.')
except ZeroDivisionError as err:
print(err)
오류 발생시키기
직접 작성한 프로그램에서 허용하지 않는 동작을 하려고 할 때도 의도적으로 오류를 발생시킬 수 있다.
raise 오류 종류
입력받은 숫자가 10 이상일 때 의도적으로 ValueError를 발생시키겠다.
try:
print('나누기 전용 계산기')
num1 = int(input('첫 번째 수: '))
num2 = int(input('두 번째 수: '))
if num1 >= 10 or num2 >= 10:
raise ValueError
print(f'{num1} / {num2} = {int(num1/num2)}')
except ValueError:
print('오류 발생 잘못된 값을 입력했습니다.')
except ZeroDivisionError as err:
print(err)
사용자 정의 예외 처리
두자리 이상을 입력했을 때 발생하는 오류 BigNumberError 라는 클래스를 만든다.
코드에서 새로운 오류를 정의해 예외 처리하려면 파이썬에 포함된 Exception이라는 클래스를 상속해야 한다.
class BigNumberError(Exception):
pass
try:
print('나누기 전용 계산기')
num1 = int(input('첫 번째 수: '))
num2 = int(input('두 번째 수: '))
if num1 >= 10 or num2 >= 10:
raise BigNumberError
print(f'{num1} / {num2} = {int(num1/num2)}')
except ValueError:
print('오류 발생 잘못된 값을 입력했습니다.')
except BigNumberError:
print('한 자리 숫자만 입력하세요.')
오류와 상관없이 무조건 실행하기: finally
try:
실행할 명령1
실행할 명령1
...
except 오류 종류:
예외 처리 명령1
예외 처리 명령2
...
except 오류 종류2 as 변수명:
예외 처리 명령1
예외 처리 명령2
...
finally:
실행할 명령1
실행할 명령2
...
class BigNumberError(Exception):
pass
try:
print('나누기 전용 계산기')
num1 = int(input('첫 번째 수: '))
num2 = int(input('두 번째 수: '))
if num1 >= 10 or num2 >= 10:
raise BigNumberError
print(f'{num1} / {num2} = {int(num1/num2)}')
except ValueError:
print('오류 발생 잘못된 값을 입력했습니다.')
except BigNumberError:
print('한 자리 숫자만 입력하세요.')
finally:
print('계산기가 종료됐습니다.')
오류 발생 여부와 상관없이 finally 문을 실행한다.
'Python 기초' 카테고리의 다른 글
[Python] 클래스 정리 (0) | 2023.03.29 |
---|---|
[Python] 입출력 정리 (0) | 2023.03.25 |
[Python] 함수 정리 (0) | 2023.03.22 |
[Python] 제어문 정리 (0) | 2023.03.19 |
[Python] 자료구조 정리 (0) | 2023.03.19 |
댓글