프로그래머스 파이썬 입문_12차시 예외처리

리냥·2022년 5월 31일
0

프로그래머스 파이썬 입문_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으로 나눌 수 없습니다.")
  • tip
try:
    # 에러가 발생할 가능성이 있는 코드
except Exception: # 에러 종류
    #에러가 발생 했을 경우 처리할 코드

2-1. 예외의 이름을 모를 때

  • 예외 이름을 모르는 경우 처리 방법
try:
    # 에러가 발생할 가능성이 있는 코드
except Exception as ex: # 에러 종류
    print('에러가 발생 했습니다', ex) # 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 ))
  • tip
try:
    # 에러가 발생할 가능성이 있는 코드
except Exception as ex:     # 에러 종류
    print('에러가 발생 했습니다', ex)  # 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
  • tip
try:
    ...
    raise 에러종류
    ...
except 에러종류:
    # 처리할 코드

profile
안녕하세요. 일로 인해 잠시 쉽니다 :)

0개의 댓글