💻STUDY/PYTHON STUDY

9주차 수업 복습

coldNoodlePigeon 2021. 5. 9.

1. 오류 

 

프로그램이 올바르게 동작하지 않는 것. 

 

  • 구문 오류 (SyntaxError) / 실행 전 에러 메시지 보냄/ 프로그램이 구문법에 맞지 않아 생기는 오류
  • 실행시간 오류 (RuntimeError) /실행 중/프로그램 실행 중에 발생한 오류 
  • 논리 오류/ 실행 후/프로그램 실행 결과가 올바르지 않은 경우

 

 

2. 예외

 

 

예외 (exception): 프로그램 실행 중에 발생하는 오류 혹은 비정상적 상황이라고 할 수 있다. 

 

  • ZeroDivisionError : 수를 0으로 나눌 때 발생하는 예외
  • IndexError: 배열의 인덱스를 잘못 사용할 때 발생하는 예외 
  • ValueError: 연산이나 내장 함수에 적절치 않는 값을 인수를 전달하면 발생하는 예외
  • fileNotFoundError: 파일을 열 수 없으면 발생하는 예외
  • TypeError: 피연산자 또는 함수 인수의 타입이 틀린 경우 발생하는 예외 

-> 발생한 예외를 처리하지 않으면 프로그램은 더 이상 실행되지 않고 종료한다. 

 

 

예외 처리를 위한 기능들

 

  • 예외 정의 (define exception): 프로그래머가 새로운 예외를 정의할 수 있는 기능
  • 예외 발생(raise or throw exception): 예외를 발생시킬 수 있는 문장
  • 예외 처리(exception handling):발생된 예외를 처리하기 위한 문장

 

3. 예외처리

 

try:
    x=int(input())
    y=10/x
    print(y)

except:
    print("예외 발생!")
0
예외 발생!

 

 

try:
    x=int(input())
    print(10/x)
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다")
except ValueError:
	print("입력한 값은 정수가 아닙니다")
0
숫자를 0으로 나눌 수 없습니다
9.0
입력한 값은 정수가 아닙니다

 

try:
    x=int(input())
    print(10/x)
except ZeroDivisionError as e:
    print("0으로 나눌 수 없습니다: ",e)
excpet ValueError as e:    
	prnt("입력 값은 정수가 아닙니다: ",e)
0
0으로 나눌 수 없습니다: division by zero 
9.0
입력 값은 정수가 아닙니다: invalid literal for int() with base 10:'9.0'

 

try:
    x=int(input())
    result=10/x
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다")
except ValueError:
    print("입력한 값은 정수가 아닙니다")
else:
    print(result)

 

 

y=[10,20,30]
try:
    index=int(input("인덱스를 입력하시오: "))
    x=int(input("나눌 숫자를 입력하세요: "))
    print(y[index]/x)

except ZeroDivisionError as e:
    print("숫자를 0으로 나눌 수 없습니다: ",e)
except ValueError as e:
    print("입력한 값은 정수가 아닙니다: ",e)
except IndexError as e:
    print("잘못된 인덱스입니다: ",e)

finally:
    print("try문 수행완료")
인덱스를 입력하세요: 1
나눌 숫자를 입력하세요: 2
10
try문 수행완료 
인덱스를 입력하세요: 3
나눌 숫자를 입력하세요: 5
잘못된 인덱스입니다: list index out of range
try문 수행완료

 

 

4.예외 전파 

 

예외 전파 (exception propagation): 호출된 함수 내에서 발생된 예외는 그 함수 내에서 처리하지 않으면 호출의 역순으로 처리될 때까지 호출자 함수에게 전파됨

 

5.예외 정의


try:

 

except BaseException: 

#최상위 exception 클래스


=


try:

 

except: 


 


raise 예외이름 

 

 

or 

 

 

raise 예외이름(메시지)


예외 발생시킬 수 있음 

 

 

 

class NegativeInputException(Exception):
    pass

def input_total():
    try:
        total=0
        while True:
            try:
                score=int(input())
                if score<0:
                    raise NegativeInputException
                total=total+score
            except ValueError:
                print("입력값이 정수가 아님. 다시 입력")
    except NegativeInputException as e:
        print(e)
        return total

 

>>> input_total()
10
20.0
입력값이 정수가 아님. 다시 입력
20
30
-1

60

 

 

 

 

 

 

'💻STUDY > PYTHON STUDY' 카테고리의 다른 글

11주차 수업 복습  (0) 2021.05.22
10주차 수업 복습  (0) 2021.05.13
8주차 배운거 복습  (0) 2021.04.28
7주차 수업 복습  (0) 2021.04.14
6주차 수업 복습  (0) 2021.04.07

댓글