[Python] 7. 예외처리
[Python] 7. 예외처리
1. try, except, raise
1) 오류
- SnytaxError
- IndentationError
- TapError
- 등등 많은 오류가 있음.
- 에러코드를 잘 모르겠다면 검색을 통해 해결!
- 예외처리를 통해 어느정도 에러를 예방 가능
2) 예외처리
- try, except 형식
- 간단하게 예외처리를 할 수 있음.
- 예외처리가 필요한 부분이 어디인지 확실하게 파악한 후 사용.
try:
예외가 발생할 가능성이 있는 코드
except:
예외가 발생했을 때 실행할 코드
# except (예외처리)
def division():
try:
num1 = int(input("첫번째 정수를 입력해 주세요 : "))
num2 = int(input("두번째 정수를 입력해 주세요 : "))
return print(f"{num1}를 {num2}로 나눈 값은 {int(num1)/int(num2)}입니다.")
except:
print("0이 아닌 숫자로된 정수를 입력해주세요.")
division()
- finally 사용
# except (예외처리2)
def division():
try:
num1 = input("첫번째 정수를 입력해 주세요 : ")
num2 = input("두번째 정수를 입력해 주세요 : ")
return print(f"{num1}를 {num2}로 나눈 값은 {int(num1)/int(num2)}입니다.")
except Exception:
print("오류 발생.")
finally:
print("정상적으로 나누기 함수가 호출되었습니다.!") # 결과값에 상관없이 실행됨.
division()
- 사용자가 직접 예외를 발생시키는 방법
- raise
# raise
# 화장실이 너무 급한남자
class Toilet:
def __init__(self):
self.using = False # 화장실 사용x
def in_use(self):
if self.using == False:
print("화장실을 사용합니다!")
self.using = True
else:
raise Exception("안에 사람이 있습니다. 잠시 기다려주세요.")
def not_in_use(self):
self.using = False
print("안에 사람이 없습니다. 이용이 가능합니다.")
man = Toilet()
while True:
use = input("화장실을 사용하시겠습니까? (Y/N)")
try:
if use == "Y":
man.in_use()
else:
man.not_in_use
except Exception as e:
print(e)