예외(Exception)는 프로그램 실행 중에 발생하는 예상치 못한 이벤트입니다. 런타임 오류라고도 합니다. 해당 오류가 발생하면 Python은 실행 중에 예외를 생성하고 이를 처리할 수 있으므로 프로그램이 중단되는 것을 방지할 수 있습니다. 이번 글에서는 '파이썬에서 예외를 어떻게 인쇄할 수 있나요?'에 초점을 맞춰보겠습니다.
Python에서 예외란 무엇입니까?
~ 안에 파이썬 , 예외는 프로그램의 오류 유형입니다. 프로그램이 구문적으로는 정확하지만 실행 중 오류가 발생하는 경우를 '예외'라고 합니다.
예 : 이 예에서는 숫자를 0으로 나누려고 하므로 런타임 오류가 발생합니다.
파이썬3
num1>=> 5> num2>=> 0> print>(num1>/> num2)> |
>
>
산출
Traceback (most recent call last): File 'Solution.py', line 5, in print(num1 / num2) ZeroDivisionError : division by zero>
이 프로그램은 구문적으로 정확합니다. . 여기서 유일한 문제는 작업에 사용되는 숫자 때문입니다. 어떤 숫자도 0으로 나눌 수 없으므로 오류가 발생합니다. 따라서 이는 '예외'의 예입니다.
예외는 어떤 모습인가요?
위 프로그램을 실행했을 때 예외가 발생했습니다. 발생한 오류에는 오류가 발생한 줄, 정확한 줄, 오류 유형이 표시됩니다.
표시된 오류 유형을 '예외'라고 합니다. Exceptions를 통해 우리는 발생한 문제에 대해 알게 됩니다. 위 프로그램의 예외는 다음과 같습니다. ZeroDivisionError: 0으로 나누기 .
예 : 여기서 변수 var1의 할당은 다음과 같이 수행됩니다. 정의되지 않은 변수 , var2.
파이썬3
var1>=> var2> |
>
행 대 열
>
산출
Traceback (most recent call last): File 'Solution.py', line 2, in var1 = var2 NameError: name 'var2' is not defined>
위에서 우리는 예외를 다음과 같이 볼 수 있습니다. NameError: 이름 'var2'가 정의되지 않았습니다. .
Python의 예외 처리
예외는 때때로 매우 귀찮을 수 있습니다. 여기서 예외 처리의 개념이 등장합니다. 예외 처리를 통해 사용자에게 오류를 던지는 대신 사용자를 위해 예외를 쉽게 처리할 수 있습니다.
예 : 이 프로그램에서는 'int' 유형으로 입력을 받습니다. 하지만 여기에 문자를 입력하면 'ValueError'가 발생합니다. 이는 사용자를 여러 번 혼란스럽게 할 수 있습니다. 여기서는 예외 처리를 수행합니다. 값 오류를 발생시켜 사용자를 혼란스럽게 하는 대신, 사용자에게 다시 시도하라는 문구를 표시하고 사용자에게 숫자를 다시 입력할 수 있는 기회를 제공합니다.
파이썬3
num1>=> int>(>input>(>'Enter num1: '>))> num2>=> int>(>input>(>'Enter num2: '>))> answer>=> f>'{num1} / {num2} = {num1 / num2}'> print>(answer)> |
>
>
산출
Enter num1: 1 Enter num2: b Traceback (most recent call last): File 'D:/PycharmProjects/pythonProject2/main.py', line 15, in num2 = int(input('Enter num2: ')) ValueError: invalid literal for int() with base 10: 'b'> try, Except 및 else 사용
이 코드에서는 입력이 올바른 방식으로 제공될 때까지 사용자가 시도할 수 있도록 하기 위해 while 루프가 실행됩니다. 'try' 절을 사용했습니다. try 절은 해당 절에 있는 줄의 오류를 확인합니다.
예외가 발생하면 '제외' 절로 점프하여 우리가 제공한 오류 메시지를 인쇄합니다. 두 개의 제외 절을 작성했습니다. 하나는 ValueError이고 다른 하나는 ZeroDivisionError입니다. 이러한 각 절은 해당 예외를 처리하고 해당 메시지를 인쇄합니다.
그런 다음 마지막으로 else 절을 작성했습니다. 오류가 발생하지 않으면 else 블록이 실행됩니다. else 블록에서는 나눗셈의 몫을 인쇄하고 루프에서 빠져 나옵니다.
파이썬3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as e:> >print>(>'Try putting an integer value.
Error Occured:'>, e)> >except> ZeroDivisionError as ex:> >print>(>'Division by zero is invalid!
Error Occured:'>, ex)> >else>:> >print>(answer)> >break> |
>
>
산출:

인쇄 예외
이제 예외가 정확히 무엇인지, 어떻게 생겼는지, 어떻게 처리하는지 살펴보았으므로 이제 예외를 인쇄하는 방법을 살펴보겠습니다.
예외를 인쇄하려면 다음을 사용합니다. '처럼' 파이썬의 키워드.
우리는 이전에 사용한 것과 동일한 예를 사용했습니다. 'as' 키워드를 사용하고 'ValueError'에 대해 변수 've'를, 'ZeroDivisionError'에 대해 'zde'를 선언했습니다. 그런 다음 예외가 발생하면 해당 예외를 인쇄하는 코드를 작성했습니다. 하지만 여전히 우리가 받은 예외 유형을 볼 수 없습니다.
파이썬3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as ve:> >print>(ve)> >except> ZeroDivisionError as zde:> >print>(zde)> >else>:> >print>(answer)> >break> |
>
>
산출:
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 0 Enter num2: 0 division by zero Enter num1: 16 Enter num2: 4 16 / 4 = 4.0>
인쇄 예외 유형
예외 유형을 보려면 type() 함수를 사용할 수 있습니다.
여기서는 코드를 실행하는 동안 발생한 예외 유형을 알기 위해 type() 함수를 사용했습니다.
파이썬3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as ve:> >print>(>type>(ve), ve)> >except> ZeroDivisionError as zde:> >print>(>type>(zde), zde)> >else>:> >print>(answer)> >break> |
문자열 포맷터
>
>
산출
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 1 Enter num2: 0 division by zero Enter num1: 4 Enter num2: 2 4 / 2 = 2.0>