본문 바로가기
Python/Python_basic

오류예외 처리

by Mr.DonyStark 2024. 1. 30.

□ try - except 문

  ○ try 구문에서 지정한 코드실행중 오류가 발생되면

  ○ except 구문에서 지정한 코드가 실행됨

#기본형식
try:
	---
except [발생_오류 [as 오류_변수]]
	---
    
#예제1
a= 4/0 #오류출력ZeroDivisionError: division by zero

try:
    4/0
except ZeroDivisionError as e:
    print(e) #출력 : division by zero

#예제2
try:
    a=[1.2]    
    print(a[3]) #해당코드를 실행하면 오류로 except구문에서의 list index out of range 출력
    4/0 #해당코드를 실행하면 오류로 except구문에서의 division by zero 출력
except (ZeroDivisionError, IndexError) as e:
    print(e)

 

  ○ 오류 회피하기

# 아래 코드는 없는 파일을 읽고자 할때 발생되는 에러를 예외처리하는 구문임
try:
    f = open('나없는파일':'r')
except FileNotFoundError:
    pass           #pass를 지정하면 오류가 발생하더라도 다음 코드 진행하게됨

 

□ 심화예제

  ○ 리스트 ['파이썬','88','장고', '32', '자바', '125', '77'] 중 숫자만 필터링하는 예외처리

list_data = ['파이썬','88','장고', '32', '자바', '125', '77']
new_list = list()
for i in range(len(list_data)):
    try:
        int(list_data[i])			#값 형변환시 숫자 데이터는 문제가 없지만, 문자를 형변환하면 ValueError 출력됨
        new_list.append(list_data[i])
    except ValueError as f: #오류 발생시 발생된 값은 무시하고 바로 다음 데이터를 형변환 진행
        pass
print(f'{list_data} 숫자만 고르면 {new_list}')

 

  ○ 원넓이/둘레를 위해 값 입력 중 텍스트 값 입력시 발생오류 예외처리

     * instance() 함수는 변수가 특정 클래스의 인스턴스인지 확인하는 데 사용하며 Bollean 형태로 True, False 값을 반환함

number_jungsoo = input('정수 입력: ')

try:
    number_jungsoo = int(number_jungsoo)
    if isinstance(number_jungsoo, int): #숫자를 입력받으면 True가되어 아래코드 실행. 텍스트를 받으면 ValueError 으로 예외처리 진행 
        half_length = number_jungsoo
        circle_round = 3.14 * 2 * half_length
        circle_area = 3.14 * (half_length**2)
        print(f'○원 반지름\t:\t{half_length}\n○원 둘레\t:\t{circle_round}\n○원 넓이\t:\t{circle_area}')
except ValueError:
    print('정수를 입력해야지 자식아\n프로그램 폭발')

'Python > Python_basic' 카테고리의 다른 글

클랙스/객체  (0) 2024.01.29
정규 표현식 ④  (0) 2024.01.28
정규 표현식 ③  (1) 2024.01.28
정규 표현식 ②  (0) 2024.01.28
정규 표현식 ①  (0) 2024.01.26