오늘도 어김없이 개발의 집중하는 시간을 가졌습니다. 그래서 저는 3주차 과제를 진행했고 하면서 몰랐던점 그리고 팀원들과 소통하면서 알게 된점에 대해서 작성하겠습니다.
: 초기 모델 무조건 이 기능은 있어야한다 (회원가입 : 필수적이니깐 MVP , 프로필 수정 : 꼭필요하진 않으니깐 MVP X)
try:
실행 명령문1
실행 명령문2
...
except 에러 종류1:
예외 처리 명령문1
예외 처리 명령문2
try:
# 예외가 발생할 수 있는 코드
result = 10 / 0
except ZeroDivisionError as e:
# 특정 예외를 처리
print(f"0으로 나눌 수 없습니다.")
except Exception as e:
# 모든 예외를 처리
print(f"알 수 없는 에러: {e}")
else:
# 예외가 발생하지 않았을 때만 실행
print("정상적으로 실행되었습니다.")
finally:
# 예외 발생 여부와 관계 없이 항상 실행
print("정리 작업을 수행합니다.")
ValueError : 잘못된 값
TypeError : 잘못된 타입
ZeroDivisionError : 0으로 나누기
FileNotFoundError : 파일이 없음
KeyError : 딕셔너리에 키가 없음
IndexError : 인데스 범위 초과
def divide(a, b):
if b == 0:
raise ValueError("b는 0이 될 수 없습니다.") # b가0이면 ValueError를 일으키고 return은 실행되지 않는다
return a / b
try:
result = divide(10,0)
except ValueError as e:
print(f"에러: {e}")
# 출력 : 에러: b는 0이 될 수 없습니다.
# error_pass.py
try:
# 설정 파일을 읽으려 시도
f = open("설정파일.txt", 'r')
config = f.read()
f.close()
except FileNotFoundError:
pass # 설정 파일이 없어도 계속 진행
# 프로그램의 주요 기능은 계속 수행
print("프로그램이 정상적으로 실행됩니다.")
pass를 사용해서 오류가 발생하더라도 프로그램이 중단되지 않고 계속 진행
파이썬 내장 클래스인 Exception 클래스를 상속하여 만들 수 있다.
class MyError(Exception):
pass
def say_nick(nick):
if nick == '바보':
raise MyError()
print(nick)
say_nick("천사")
say_nick("바보")
""" 출력:
천사
Traceback (most recent call last):
File "...", line 11, in <module>
say_nick("바보")
File "...", line 7, in say_nick
raise MyError()
__main__.MyError
"""
try:
say_nick("천사")
say_nick("바보")
except MyError:
print("허용 되지 않는 별명입니다.")
"""
천사
허용되지 않는 별명입니다.
"""

# 예외 처리로 변경
try:
score = int(input("점수를 입력하세요:"))
if score < 0 or score > 100:
raise ValueError
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "F"
print(grade)
except ValueError:
print("잘못된 값을 입력하였습니다.")

def calculator(a, b, operator):
if operator == '+':
return a + b
elif operator == '-':
return a - b
elif operator == '*':
return a * b
elif operator == '/':
if b == 0:
raise ZeorDivisionError("0으로 나눌 수 없습니다.")
return a / b
else:
raise ValueError("지원하지 않는 연산자 입니다.")
tests = [
(10, 5, '+'),
(10, 5, '-'),
(10, 5, '*'),
(10, 5, '/'),
(10, 0, '/'),
(10, 5, '%')
]
for a, b, op in tests:
try:
print(calculator(a, b, op))
except ZeroDivisionError as e:
print(e)
except ValueError as e:
print(e)
이렇게 과제 진행하면서 몰랐던 점에 대해서 작성해보았습니다. 내일은 10일차인데 휴가라,,, 내일 모레 AWS 워크샵으로 돌아오겠습니다