파이썬 예외 처리 오류 (Python exception handling error) 알아보기.

파이썬 예외 처리 오류

파이썬은 유연한 언어로서 사용이 간편하다는 장점이 있지만, 코드를 작성할 때는 예외 처리를 꼭 해주어야 한다. 정확히 말하면, 런타임시에 발생할 수 있는 예외상황을 미리 예측하여 프로그램 실행 중 오류가 발생하는 것을 미리 방지하는 작업이다.

하지만, 예외 처리를 제대로 하지 않으면 프로그램이 강제로 종료되거나, 원하지 않은 결과가 나올 수도 있기 때문에 파이썬에서 예외 처리는 매우 중요한 부분이다.

예외 처리의 개념

예외 처리란, 프로그램 실행시에 발생할 수 있는 의도하지 않은 상황을 미리 예측하여 적절한 조치를 취하는 것이다. 이를 통해 프로그램이 종료되지 않고 오류를 미리 방지할 수 있다.

예외 처리의 방법

예외 처리는 try, except, else, finally와 같은 예약어를 사용하여 구현할 수 있다. 이 중에서 try 블록에는 예외가 발생할 가능성이 있는 코드를 작성합니다.

python
try:
print(10 / 0) # ZeroDivisionError 발생
except ZeroDivisionError as e:
print("에러 발생 : ", e)

위 코드는 try 블록에서 0으로 나누는 작업을 시도하게 되는데, 이 작업은 ZeroDivisionError 예외를 일으킬 가능성이 매우 높습니다. 그러므로 이 예외에 대한 except 블록을 추가하여 작성하게 됩니다.

except 블록에서는 예외가 발생했을 경우의 처리를 작성합니다. 예외 상황을 미리 예측하여 처리하기 때문에, 이를 통해 프로그램이 강제로 종료되는 일을 막을 수 있습니다.

여러 가지 예외 처리

하나의 try 블록에서 다수의 예외를 처리할 수 있습니다. 그러나, 이 때 각 예외 발생에 대해 별도로 처리해야 합니다.

python
try:
a = [1,2]
print(a[2]) # IndexError 발생
print(10 / 0) # ZeroDivisionError 발생
except IndexError as e:
print("IndexError 발생 : ", e)
except ZeroDivisionError as e:
print("ZeroDivisionError 발생 : ", e)

위 예제에서 처음에는 배열 a에서 인데스 2에 접근하려고 하므로 IndexError 예외가 발생합니다. 따라서 이 에러에 해당되는 except 블록으로 이동하게 됩니다.

따라서, 예외 처리를 효율적으로 할려면 각 예외에 따라 처리를 분기하여 작성해주어야 합니다.

else와 finally

때로는 try 블록을 사용할 경우, 어떤 작업을 진행하고 끝내면서 프로그램이 종료될 필요가 있기때문에 finally 블록을 사용할 수 있습니다. finally 블록은 예외와 상관 없이 항상 실행됩니다.

또한, else 블록을 사용하면 예외가 발생하지 않은 경우에 실행됩니다.

python
try:
print("hello world")
except:
print("exception")
else:
print("else")
finally:
print("finally")

예외 처리 실제 사용 예제

아래는 파일 입출력 시에 파일이 없을 때의 예외처리 코드 예제입니다.

python
try:
with open("test.txt", "r") as file:
print(file.readlines())
except FileNotFoundError as e:
print("파일 없음")

위 예제는 파일이 없을 때 해당 파일의 클래스를 FileNotFoundError 에러를 발생시켜 try에서 처리합니다. 이렇게하면 파일이 없을 경우에 대한 예외처리가 가능합니다.

마치며

예외 처리는 파이썬 프로그래밍에서 가장 핵심이라고 할 수 있습니다. 예상치 못한 예외 상황이 발생하지 않도록 철저하게 예외처리를 해주면, 프로그램의 어떤 문제점도 미리 예방할 수 있습니다. 이를 통해 안전하게 프로그래밍을 할 수 있으며, 개발자로서의 신뢰성을 높여 줄 수 있습니다. 끝으로, 항상 코드 작성 시 예외 처리에 대한 이해와 고민을 하여야 합니다.