본문 바로가기
Python

Python 예외 처리

by 코딩하는 욤욤이 2024. 1. 31.
반응형

이 포스팅에서는 Python 예외 처리, try, catch 및 finally 차단에 대해 배웁니다.

프로그램 코드는 사람이 개발하기 때문에 가끔 틀리는 경우가 있습니다. 우리의 코드는 런타임 오류, 구문 오류, 의미 오류 등의 오류로 구성될 수 있습니다. Python에서는 프로그램 실행을 차단하고 오류 메시지를 표시하는 것이 중요합니다. 이것이 예외라고 알려진 것입니다.

Python 예외 처리
예외는 프로그램 명령의 정상적인 흐름을 방해하는 프로그램 실행 중에 발생하는 바람직하지 않은 이벤트입니다.

이러한 오류나 예외를 처리하기 위해 예외 처리 기술을 사용합니다.

예외는 일반적으로 다음 이벤트로 인해 발생합니다.

1. 열려고 하는데 메모리에 없는 파일입니다.
2. 사용자가 데이터를 잘못 입력한 경우.

 

Python 예외 처리

이것은 Python 오류의 예입니다. Python의 장점은 오류 메시지에 대한 자세한 내용을 제공한다는 것입니다.

위 프로그램에서는 에러라인 번호와 에러라인 코드를 알려줍니다. 게다가 잊어버린 것이 있는지도 알려줍니다. 마찬가지로, 위 프로그램에서는 변수 a를 선언하고 변수를 콘솔에 직접 인쇄하는 것을 놓쳤습니다.

Python 예외 처리 기술의 도움으로 프로그램의 갑작스러운 종료를 방지하고 중단 및 오류를 처리하며 프로그램이 갑자기 종료되는 것을 방지할 수 있습니다.

프로그램 코드를 작성하는 동안 프로그램 코드의 특정 부분이 제대로 작동하지 않을 수 있다고 생각되면 실행 시 갑자기 종료되어 시스템이 충돌할 수 있습니다. 이 모든 것을 방지하려면 코드에 예외 블록을 추가하여 오류가 발생하는 경우 Python 인터프리터가 해당 예외를 포착하고 프로그램이 충돌하는 것을 방지할 수 있습니다.

Python의 예외에 대한 수정 사항을 찾으려면 fixException.com을 확인하세요 .

Python 표준 예외
Python 라이브러리에는 미리 정의된 예외나 표준 예외가 있습니다. 따라서 필요에 따라 그 중 하나를 사용할 수 있습니다. 

 

이러한 예외는 다음과 같습니다.

IOError: 존재하지 않는 파일을 읽기 모드로 열려고 시도하는 등 I/O 작업 실행에 실패할 때 발생합니다.

IndexError: 이 오류는 존재하지 않는 요소의 번호로 시퀀스를 인덱싱할 때 발생합니다.

KeyError: 이 오류는 사전 키를 찾을 수 없을 때 발생합니다.

NameError: 변수나 함수 등의 식별자 이름을 찾을 수 없을 때 발생합니다.

SyntaxError: 구문 오류가 발생하면 발생합니다.

TypeError: 내장된 연산이나 함수가 부적절한 데이터 유형 의 객체에 적용될 때 발생합니다 .

ValueError: 내장 연산이나 함수가 올바른 유형이지만 부적절한 값을 가진 인수를 받을 때 발생합니다.

ZeroDivisionError: 나누기 또는 모듈로 연산의 두 번째 인수가 0일 때 발생합니다.

블록을 제외한 Python 시도
예외를 처리하는 표준 방법은 프로그램 코드에 try 및 Except 블록을 포함시키는 것입니다. try 블록에서는 오류를 일으킬 수 있는 코드 섹션을 작성할 수 있습니다. 그런 다음 예외가 발생하면 프로그램의 제어가 제외 블록으로 전달되어 프로그램이 비정상적으로 종료되는 것을 방지할 수 있도록 예외 블록을 작성합니다.

 

구문

try:
statement 1
statement 2
statement n
except:
statement 1
statement 2
statement n



try:

var1=float(raw_input("Enter a Number:\n"))
print("\n")
except:
print("Erorr Executing")


산출


Python 예외 처리

여기서는 raw_input() 함수를 통해 float 값을 가져올 변수를 선언했습니다. 이 코드를 try 블록에 포함시켰기 때문에 오류가 발생하면 이를 예외 블록으로 전송한 다음 오류 메시지를 제공하여 프로그램을 처리할 수 있습니다.

문자열 값 "thecrazyprogrammer.com"을 입력했지만 통역사는 부동 소수점 값을 입력할 것으로 예상했는데 이로 인해 예외가 발생했습니다. 예외가 발생하면 제어가 Except 블록으로 전달되고 print 문이 실행됩니다.

다중 예외 블록
또한 Python 인터프리터가 오류가 무엇인지 정확하게 지정하는 데 도움이 되는 단일 try 블록과 함께 여러 예외 블록을 포함할 수도 있습니다.


try:

var1=float(raw_input("Enter a Number:\n"))
print("\n")
except(SyntaxError):
print("Syntax Error Occured\n")
except(TypeError):
print("Invalid Datatype")
except(ValueError):
print("Invalid Value")


산출


여기서는 "thecrazyprogrammer.com"이라는 잘못된 값을 입력했습니다. 이는 프로그램이 부동 소수점 값을 기대하므로 잘못된 값이므로 제어가 ValueError라는 올바른 예외 블록으로 전송됩니다.

Python이 마침내 차단됨
finally 블록은 Python 예외 처리에 매우 유용합니다. finally 절은 항상 컨트롤이 try 블록을 완료하자마자 실행됩니다. 예외가 발생했는지 여부는 중요하지 않습니다.

구문
finally():

statement 1
statement n



try:

    var1=float(raw_input("Enter a Number:\n"))
    print("\n")
except:
    print("Erorr Executing\n")
finally:
print("We are in finally block")


산출


위의 예에서 프롬프트는 사용자에게 정수를 입력하도록 요청합니다. 정수를 입력한 후 예외를 확인하고 입력이 정확하므로 finally 블록으로 직접 이동합니다.

이번에도 동일한 프로그램을 실행하려고 시도했는데 이제 잘못된 입력(예: 문자열)을 입력했습니다. 이번에는 예외가 발생했으며 이제 제어는 예외 블록으로 이동하고 예외 블록 실행이 끝나자마자 제어는 finally 블록으로 이동한 후 종료되거나 먼저 발생하는 다음 명령문 시퀀스로 이동합니다.

반응형