예외란 프로그램 실행 중에 발생하는 오류로, try-except문을 통해 갑작스런 프로그램 중단을 막아줄 수 있다.
# (1) 모든 상황에 대한 처리
try:
4 / 0
except:
print("오류 발생")
# (2) 특정 상황에 대한 처리
try:
4 / 0
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
# (3) 오류 변수를 주어 오류 내용 출력
try:
4 / 0
except ZeroDivisionError as e:
print(e) # division by zero
try:
f = open('foo.txt', 'w')
finally:
f.close() # 중간에 오류가 발생하더라도 무조건 실행
raise는 의도적인 오류 발생이 필요할 때 쓰는 구문으로 발생시키고 싶은 에러와 문자를 같이 보여줄 수 있다.

예외처리 구문을 배워보니 if-else와 형태가 많이 닮아 헷갈리는 부분이 있었다. if-else는 숫자 연산처럼 값이 True 혹은 False로 조건을 테스트 할 때 사용하고, try-except는 input을 통해 입력받는 값의 오류처럼 테스트 할 수 없는 에러나 언어 규칙 위반 등을 인지하여 프로그램을 계속 진행시키도록 한다.
한마디로 if-else는 오류를 방지하는 구문, try-except는 프로그램 실행 중의 오류를 잡고 핸들링하는 구문이다.
🔽아래는 if-else와 try-except의 비교를 위해 작성한 코드
# if-else
num = int(input("숫자를 입력하세요: "))
if num != 0:
print(10 / num)
else:
print("0으로 나눌 수 없습니다.")
# 문자 입력했을 때 ValueError 발생
# try-except
try:
num = int(input("숫자를 입력하세요: "))
print(10 / num)
except ValueError:
print("숫자만 입력 가능합니다.")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
# 문자 입력했을 때, "숫자만 입력 가능합니다." 출력
예외 참고자료1 https://wikidocs.net/
예외 참고자료2 https://blockdmask.tistory.com/