예외 객체 (Exception object)는 파이썬에서 예외가 발생할 때 생성되는 객체입니다. 예외가 발생하면 해당 예외의 종류에 따라 예외 객체가 생성되고 예외 정보를 담고 있습니다. 이 예외 객체에는 예외의 유형, 메시지, 발생 위치 등과 같은 정보가 포함됩니다.
예외 객체는 try-except 블록에서 예외 처리를 위해 사용될 수 있습니다. 예외가 발생하면 프로그램 흐름이 try 블록에서 except 블록으로 이동하게 되고, 이때 예외 객체가 except 블록의 매개변수로 전달됩니다. 이를 통해 개발자는 예외 객체를 사용하여 예외 정보를 확인하고 적절한 조치를 취할 수 있습니다.
예를 들어, ValueError 예외가 발생한 경우 except ValueError as e
:와 같이 as 키워드를 사용하여 예외 객체를 e와 같은 변수에 할당할 수 있습니다. 그러면 e 변수를 통해 예외 객체의 속성에 접근하고 예외 정보를 확인할 수 있습니다. 일반적으로 예외 객체의 속성으로는 예외 메시지를 나타내는 args, 예외가 발생한 파일과 라인 정보를 담고 있는 filename 및 lineno 등이 있습니다.
예외 객체를 사용하면 예외 처리 과정에서 발생한 문제를 진단하고 디버깅하는 데 도움이 됩니다. 예외 객체의 속성을 검사하거나 예외 객체를 다시 발생시키는 등의 작업을 수행할 수 있습니다.
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() 함수에 잘못된 형식의 문자열이 전달되었을 때 발생하는 예외 메시지입니다.
예외 객체를 ㅅ ㅏ용하면 except 구문을 if 조건문처럼 사용해서 예외를 구분할 수 있습니다.
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)
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)
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 구문을 사용하여 이 예외를 처리하고, 해당 예외의 메시지를 출력합니다.