프로그래머스 파이썬 입문_12차시 예외처리
1-1. try except
예외처리
- 경우에 따라 예외 처리 대신 if else를 사용 할 수 있다.
try:
except Exception:
1-2. try except 실습 하기
다음 코드는 3을 0으로 나누고 있습니다. 나눗셈 연산은 0으로 나눌 수 없기 때문에 문제의 코드를 실행하면 에러가 발생합니다. 에러의 이름을 확인하고 try except문으로 코드의 2번째 줄을 감싸서 에러가 발생할 경우 4번째 줄이 출력되도록 만들어 보세요.
프로그래밍을 하다 만나는 다양한 오류들은 유연하게 프로그래밍 할 수 있게 도와주는 도구가 되기도 합니다. try except를 이용하면 에러의 이름을 활용하여 에러를 코드 내에서 처리할 수 있습니다.
아래의 쓰임을 참고하여 문제를 해결해 보세요.
try:
a = 3/0
except Exception:
print("0으로 나눌 수 없습니다.")
try:
except Exception:
2-1. 예외의 이름을 모를 때
try:
except Exception as ex:
print('에러가 발생 했습니다', ex)
2-2. 예외의 이름을 모를 때 실습 하기
예제1
다음 코드는 발생하는 예외를 try/except문으로 처리하고 있습니다. 5번째 줄에서는 어떤 에러가 발생하는지 출력할 수 있도록 빈칸을 채우고, 6번째 줄은 예외를 출력할 수 있도록 format의 빈칸을 작성하세요.
예외의 이름을 모르는 경우에는 Exception as를 통해 해결할 수 있습니다.
아래의 예를 참고하여 문제를 해결해 보세요.
try:
a = 5
b = 0
c = a / b
except
Exception as ex:
print('다음과 같은 에러가 발생했습니다: {}'.format( ex ))
try:
except Exception as ex:
print('에러가 발생 했습니다', ex)
3-1. raise
- 예외 발생
- 사용자가 직접 에러를 발생시키는 기능
raise Exception
# 에러 종류
- 많이 사용하면 코드를 읽기 어려워진다.
지키지 않는다.
3-2. 딕셔너리 수정하기 실습 하기
예제1
다음 코드는 문구점 3곳을 검사하면서 풀이 있으면 문구점의 이름과 가격을 출력합니다.
실행 버튼을 눌러서 출력 결과를 확인해 보세요.
shops = {
"송일문방구": {"가위": 500, "크레파스": 3000},
"알파문구": {"풀": 800, "도화지": 300, "A4용지": 8000},
"다이소": {"풀": 500, "목공본드": 2000, "화분": 3000}
}
for shop, products in shops.items():
for product, price in products.items():
if product =='풀':
print("{}: {}원".format(shop, price))
예제2
풀을 파는 가게를 발견하면 for문 전체를 즉시 종료하고 싶습니다. for 문을 try/except로 감싸고 print문 다음에 raise StopIteration을 추가해서 풀을 파는 가게를 하나만 출력하도록 만들어 보세요. except문에서는 StopIteration을 지정해 주어야 합니다.
사용자는 여러가지 이유로 에러를 직접 발생시킬 수 있습니다. 그중 하나의 예로 중첩된 for 문에서 바로 종료하고 싶을 때 에러를 발생시키기도 합니다.
아래의 예를 참고하여 문제를 해결해 보세요.
shops = {
"송일문방구": {"가위": 500, "크레파스": 3000},
"알파문구": {"풀": 800, "도화지": 300, "A4용지": 8000},
"다이소": {"풀": 500, "목공본드": 2000, "화분": 3000}
}
try:
for shop, products in shops.items():
for product, price in products.items():
if product =='풀':
print("{}: {}원".format(shop, price))
raise StopIteration
except StopIteration:
pass
try:
...
raise 에러종류
...
except 에러종류: