혼자보기위한python🌖예외처리3️⃣

이풀싹·2023년 5월 19일
0

파이썬_BASIC

목록 보기
8/13
post-thumbnail

🌥(•ˋ _ ˊ•)

1️⃣ 예외 객체 (Exception object)

예외 객체 (Exception object)는 파이썬에서 예외가 발생할 때 생성되는 객체입니다. 예외가 발생하면 해당 예외의 종류에 따라 예외 객체가 생성되고 예외 정보를 담고 있습니다. 이 예외 객체에는 예외의 유형, 메시지, 발생 위치 등과 같은 정보가 포함됩니다.

예외 객체는 try-except 블록에서 예외 처리를 위해 사용될 수 있습니다. 예외가 발생하면 프로그램 흐름이 try 블록에서 except 블록으로 이동하게 되고, 이때 예외 객체가 except 블록의 매개변수로 전달됩니다. 이를 통해 개발자는 예외 객체를 사용하여 예외 정보를 확인하고 적절한 조치를 취할 수 있습니다.

예를 들어, ValueError 예외가 발생한 경우 except ValueError as e:와 같이 as 키워드를 사용하여 예외 객체를 e와 같은 변수에 할당할 수 있습니다. 그러면 e 변수를 통해 예외 객체의 속성에 접근하고 예외 정보를 확인할 수 있습니다. 일반적으로 예외 객체의 속성으로는 예외 메시지를 나타내는 args, 예외가 발생한 파일과 라인 정보를 담고 있는 filename 및 lineno 등이 있습니다.

예외 객체를 사용하면 예외 처리 과정에서 발생한 문제를 진단하고 디버깅하는 데 도움이 됩니다. 예외 객체의 속성을 검사하거나 예외 객체를 다시 발생시키는 등의 작업을 수행할 수 있습니다.

🟡예외가 발생하면 예외 정보가 생기고 예외 정보는 예외 객체에 저장된다❗

🟡Exception object

try: 
    number_input_a=int(input("정수 입력>"))
    
    print("원의 반지름:",number_input_a)
    print("원의 둘레:",number_input_a*3.14*2)
    print("원의 넓이:",number_input_a**2*3.14)
except Exception as exception:
    
    print("type(exception):",type(exception))
    print("exception:",exception)

except Exception as exception: : 예외가 발생했을 때 처리하기 위한 except 블록을 시작합니다. Exception은 모든 예외 클래스의 기본 클래스이며, 모든 예외를 처리할 수 있습니다. as exception은 발생한 예외 객체를 exception 변수에 할당합니다.
print("type(exception):", type(exception)) : 예외 객체의 타입을 출력합니다. 이는 어떤 종류의 예외가 발생했는지를 확인하는 데 도움이 됩니다.
print("exception:", exception) : 예외 객체의 내용을 출력합니다. 이는 예외에 관련된 메시지 또는 정보를 확인하는 데 도움이 됩니다.
invalid literal for int() with base 10은 int() 함수에 잘못된 형식의 문자열이 전달되었을 때 발생하는 예외 메시지입니다.


2️⃣ 예외 구분하기

예외 객체를 ㅅ ㅏ용하면 except 구문을 if 조건문처럼 사용해서 예외를 구분할 수 있습니다.

🟡 여러가지 예외가 발생할 수 있는 code

list_number=[1,2,3,4,5]

try:
    number_input=int(input("정수 입력:"))
    print("{}번째 요소:{}".format(number_input,list_number[number_input]))
except Exception as exception:
    print("type(exception):",type(exception))
    print("exception:",exception)

정상적으로 정수를 입력한 경우:

정수로 변환될 수 없는 값을 입력한 경우:

정수를 입력했지만, 리스트 길이를 넘는 경우:

🟡 예외 구분하기

list_number=[52,273,13,62,803]

try:
    number_input=int(input("정수 입력:"))
    
    print("{}번째 요소: {}".format(number_input,list_number[number_input]))
except ValueError:
    print("정수를 입력하세요!!")
except IndexError:
    print("리스트 인덱스를 벗어 났어요!!")

예외 객체는 except 블록에서 예외가 발생하면 생성되는 객체입니다. except 키워드 뒤에 예외의 종류를 지정한 후 as 키워드를 사용하여 예외 객체를 받을 변수를 지정할 수 있습니다.

try:
    number_input=int(input("정수 입력:"))
    
    print("{}번째 요소: {}".format(number_input,list_number[number_input]))
except ValueError as ve:
    print("정수를 입력하세요!!")
    print("exception:",ve)
except IndexError as ie:
    print("리스트 인덱스를 벗어 났어요!!")
    print("exception:",ie)



3️⃣ 모든 예외 잡기

list_number=[52,273,13,62,803]

try:
   number_input=int(input("정수 입력:"))
   
   print("{}번째 요소: {}".format(number_input,list_number[number_input]))
   예외.발생()
except ValueError as exception:
   print("정수를 입력하세요!!")
   print(type(exception),exception)
except IndexError as exception:
   print("리스트 인덱스를 벗어 났어요!!")
   print(type(exception),exception)
except Exception as exception:
   print("미리 파악하지 못한 예외발생!")
   print(type(exception),exception)

🟡 raise 구문

number=input("정수 입력:")
number=int(number)

if number>0:
    raise NotImplementedError
else:
    raise NotImplementedError

파이썬에서 raise 구문예외를 발생시키는 데 사용됩니다. 예외는 프로그램 실행 중에 발생하는 오류나 예외적인 상황을 나타냅니다. raise 구문은 개발자가 명시적으로 예외를 발생시켜 특정 상황에 대한 처리를 수행하거나, 오류를 전파하여 예외 처리 메커니즘을 통해 오류를 처리할 수 있도록 합니다.

def divide(a, b):
    if b == 0:
        raise ValueError("0으로 나눌 수 없습니다.")
    return a / b

try:
    result = divide(10, 0)
except ValueError as e:
    print(e)

위의 예제에서 divide 함수는 b가 0일 때 ValueError 예외를 발생시킵니다. 호출자는 try-except 구문을 사용하여 이 예외를 처리하고, 해당 예외의 메시지를 출력합니다.

0개의 댓글