print(2/0)
# 출력예시
# ERROR!
# Traceback (most recent call last):
# File "<main.py>", line 1, in <module>
# ZeroDivisionError: division by zero
try:
print(2/0) # 오류발생 예상 부분
except:
print("예외가 발생하였으나, 다음 항목 실행에는 문제가 없습니다.")
print(4/2)
# 출력예시
# 예외가 발생하였으나, 다음 실행에는 문제가 없습니다.
# 2.0
try:
input_data = input("정수를 입력하세요: ")
input_num = int(input_data)
except:
print("올바른 정수를 입력하세요.")
else:
odd_even = "홀수" if input_num % 2 == 1 else "짝수"
print(f"입력한 정수는 {odd_even}입니다.")
finally:
print(f"(참고) 입력 데이터: {input_data}")
# 출력예시(정상)
# 정수를 입력하세요: 4
# 입력한 정수는 짝수입니다.
# (참고) 입력 데이터: 4
# 출력예시(예외)
# 정수를 입력하세요: a
# 올바른 정수를 입력하세요.
# (참고) 입력 데이터: a
num_list = []
counter = 1
while counter < 6:
try:
num = int(input("정수를 입력하세요: "))
except:
print("정수가 입력되지 않았습니다.")
continue # 정수 미입력 시, 이하 생략
num_list.append(num)
counter += 1
print(f"입력된 숫자 목록: {num_list}")
# 출력예시
# 정수를 입력하세요: 1
# 정수를 입력하세요: a
# 정수가 입력되지 않았습니다.
# 정수를 입력하세요: b
# 정수가 입력되지 않았습니다.
# 정수를 입력하세요: 5
# 정수를 입력하세요: 6
# 정수를 입력하세요: 9
# 정수를 입력하세요: 3
# 입력된 숫자 목록: [1, 5, 6, 9, 3]
try:
input_data = int(input("10 이하의 정수를 입력하세요: "))
except Exception as e:
print(f"에러가 발생했습니다. (사유: {e})")
# 출력예시
# 정수를 입력하세요: a
# 에러가 발생했습니다. (사유: invalid literal for int() with base 10: 'a')
10 이하의 정수를 입력하세요: 20
ERROR!
Traceback (most recent call last):
File "<main.py>", line 4, in <module>
ValueError: (에러발생) 10 이하의 정수를 입력헤주세요.
# 출력예시(ValueError)
# 10 이하의 정수를 입력하세요: 20
# ERROR!
# Traceback (most recent call last):
# File "<main.py>", line 4, in <module>
# ValueError: (에러발생) 10 이하의 정수를 입력헤주세요.
def send_sms(text):
if len(text) > 10:
raise Exception("(경고) 10글자 초과로 MMS로 전환 발송", 1) # 변수(1) 바인딩
else:
print("SMS 발송 완료")
def send_mms(text):
if len(text) <= 10:
raise Exception("(경고) 10글자 이하로 SMS로 전환 발송", 2) # 변수(2) 바인딩딩
else:
print("MMS 발송 완료")
text = input("발송 내용 입력: ")
print(f"총 글자수: {len(text)}, SMS 발송중... ")
try:
send_sms(text)
except Exception as e:
# 바인딩한 변수를 활용하여 자동 전환발송 기능 구현
if e.args[1] == 1:
print(e.args[0])
send_mms(text)
elif e.args[1] == 2:
print(e.args[0])
send_sms(text)
# 출력예시
# 발송 내용 입력: this is a test message.
# 총 글자수: 23, SMS 발송중...
# (경고) 10글자 초과로 MMS로 전환 발송
# MMS 발송 완료
class StopWordException(Exception):
def __init__(self, word):
super().__init__(f"'{word}'는 사용하실 수 없는 닉네임입니다.")
# 금칙어 목록 정의
stop_word_list = ['관리자', '운영자']
input_word = input("사용하실 닉네임을 입력하세요: ")
if input_word in stop_word_list:
raise StopWordException(input_word)
else:
print(f"'{input_word}'는 사용하실 수 있는 닉네임입니다.")
# 출력예시(금칙어 미사용 시)
# 사용하실 닉네임을 입력하세요: 홍길동
# '홍길동'는 사용하실 수 있는 닉네임입니다.
# 출력예시(금칙어 사용 시)
# 사용하실 닉네임을 입력하세요: 관리자
# Traceback (most recent call last):
# File "<main.py>", line 12, in <module>
# StopWordException: '관리자'는 사용하실 수 없는 닉네임입니다.
*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.