목차:
06_1) 구문 오류와 예외
06_2) 예외 고급
06_1) 구문 오류와 예외
- 오류의 종류
- 기본 예외 처리
- try except 구문, try except else 구문
- finally 구문
▶ 오류의 종류
- 구문 오류 : 프로그램 실행 전에 발생하는 오류
sol ) 코드를 제대로 수정해야 함
- 예외(=런타임오류) : 프로그램 실행 중에 발생하는 오류
sol ) 코드를 제대로 작성하면 됨
▶ 기본 예외 처리
-> 예외를 해결 하는 모든 것 : 예외 처리
sol) 조건문을 사용하는 방법
sol) try 구문을 사용하는 방법
#------조건문으로 예외 처리하기--------#
a=input('정수를 입력해주세요: ')
if a.isdigit(): # 입력이 숫자로만 구성되있는지 확인 하는 함수 .isdigit()
b=int(a) # 문자열로 할당 받을것을 정수형으로 변환후 할당함.
print("입력받은숫자는",a,"입니다.")
else: # 정수로 입력받지 않았을 경우 실행함
print("정수를 입력하지 않았습니다.")
▶ try except 구문, try except else 구문
● try except 구문
syntax) try:
예외가 발생할 가능성이 있는 코드
except:
예외가 발생했을 때 실행할 코드
#---------try except구문으로 예외를 처리하기----------#
try:
a=int(input('정수를 입력해주세요: '))
print("입력받은숫자는",a,"입니다.")
except: # 정수로 입력받지 않았을 경우 실행함
print("정수를 입력하지 않았습니다.")
syntax) try:
예외가 발생할 가능성이 있는 코드
except:
pass
-> 예외가 발생하면 처리를 해야하지만, 해당 코드가 중요한 부분이 아니라면 일단 프로그램이 강제 종료되는
것부터 막자는 목적으로 except구문에 pass를 사용함.
list_1=["40","124","연습장","246","89"]
list_2=[]
for i in list_1:
try:
float(i) # 숫자로 변환할수 없는 문자열이면, 예외가 발생하여 line7을 실행하지 않는다.
list_2.append(i)
except:
pass
print(list_1)
['40', '124', '연습장', '246', '89']
print(list_2)
['40', '124', '246', '89']
● try except else 구문
-> try except 구문 뒤에 else구문을 붙여서 '예외가 발생하지 않았을 때 실행할 코드'를 지정함
syntax) try:
예외가 발생할 가능성이 있는 코드
except:
예외가 발생했을 때 실행할 코드
else:
예외가 발생하지 않았을 때 실행할 코드
try:
a=int(input('정수를 입력해주세요: ')) #예외가 발생할 가능성이 있는 코드
except:
print("정수를 입력하지 않았습니다.") # 정수로 입력받지 않았을 경우 실행함
else:
print("입력받은숫자는",a,"입니다.") # 정수로 입력 받았을 경우 실행함
▶ finally 구문
-> 예외가 발생하든 발생하지 않든 무조건 실행할 때 사용하는 코드
syntax) try:
예외가 발생할 가능성이 있는 코드
except:
예외가 발생했을 때 실행할 코드
else:
예외가 발생하지 않았을 때 실행할 코드
finally:
무조건 실행할 코드
try:
a=int(input('정수를 입력해주세요: ')) #예외가 발생할 가능성이 있는 코드
except:
print("정수를 입력하지 않았습니다.") # 정수로 입력받지 않았을 경우 실행함
else:
print("입력받은숫자는",a,"입니다.") # 정수로 입력 받았을 경우 실행함
finally:
print("프로그램이 끝이 났습니다") # 무엇을 입력하던간에 무조건 실행됨
● 가능한 구문조합
- try + except
- try + except + else
- try + except + finally
- try + except + else +finally
- try + finally
06_2) 예외 고급
- 예외 객체
- 예외 구분하기
- 모든 예외 잡기
- raise 구문
▶ 예외 객체
● 예외 객체: 프로그래밍 언어에서 발생한 예외정보를 저장하는 곳
->Exception 사용시 예외의 종류를 알아서 출력해줌
try:
예외가 발생할 가능성이 있는 구문
except 예외의 종류 as 예외 객체를 활용할 변수 이름:
예외가 발생했을때 실행할 구문
▶ 예외 구분하기
● 파이썬에서 except구문 뒤에 에외의 종류를 입력해서 예외를 구분할 수 있다.
try:
예외가 발생할 가능성이 있는 구문
except 예외의 종류A:
예외A가 발생했을때 실행할 구문
except 예외의 종류B:
예외B가 발생했을때 실행할 구문
except 예외의 종류C:
예외C가 발생했을때 실행할 구문
list_1=[52,273,32,72,100]
try:
number_input=int(input("정수를 입력하세요>"))
print("{}번째 요소:{}".format(number_input,list_1[number_input]))
except ValueError:
print("정수를 입력해주세요")
except IndexError:
print("리스트의 인덱스를 벗어났어요")
정수를 입력하세요> yes
정수를 입력해주세요
정수를 입력하세요>100
리스트의 인덱스를 벗어났어요
▶ 모든 예외 잡기
● 만약 예외 조건에 일치하는 것이 없다면 당연히 예외가 발생하여 프로그램이 강제 종료가 된다.
->그것을 방지하기 위해 Exception을 넣어서 프로그램이 죽지 않도록 만들어주는 것이 좋음.
list_1=[52,273,32,72,100]
try:
number_input=int(input("정수를 입력하세요>"))
print("{}번째 요소:{}".format(number_input,list_1[number_input]))
except ValueError as exception:
print("정수를 입력해주세요")
print(type(exception),exception)
except IndexError as exception:
print("리스트의 입력을 벗어났어요")
print(type(exception),exception)
except Exception as exception: # ValueError , IndexError 가 아닌 예외가 발생했을 때 실행됨
print("미리 파악하지 못한 예외가 발생했습니다.")
print(type(exception),exception)
▶ raise 구문
● raise 구문을 통해 예외를 강제로 발생시키는 기능.
syntax) rasie 예외객체
->사용이유: 구현하지 않은 부분에 대해 확실하게 표시하기 위해서
number=input("정수입력:")
number= int (number)
if number >0:
raise NotImplementedError
else:
raise NotImplementedError
'프로그래밍 > 파이썬' 카테고리의 다른 글
[파이썬 오류] Error: mkl-service + Intel(R) MKL: MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 library. Try to import numpy first or set the threading layer accordingly. Set MKL_SERVICE_FORCE_INTEL to force it. 오류 해결 (0) | 2022.11.11 |
---|---|
기타_파이썬) 파이썬 엑셀 데이터 출력 (0) | 2022.02.04 |
05강) 함수 (0) | 2022.01.21 |
파이썬) 라이브러리 업뎃중 (0) | 2022.01.17 |
04강) 반복문 (0) | 2022.01.13 |