💻STUDY/PYTHON STUDY
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 |
댓글