728x90
반응형

 티스토리 

 

예외 처리 - try-except

파이썬의 try-except 구문은 예외 처리를 위해 사용됩니다. 예외 처리는 프로그램 실행 중에 발생할 수 있는 오류(예외)를 처리하여 프로그램이 중단되지 않고 계속 실행될 수 있도록 하는 기능입니다. 이러한 처리는 프로그램의 안정성과 사용자 경험을 향상시키는 데 중요합니다.

1. 코드리뷰

try:
    # 오류가 발생할 가능성이 있는 코드
except 예외유형 as 변수명:
    # 예외 처리 코드
try:
    x = 5
    y = 0
    result = x / y
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

이 코드는 y가 0이므로, ZeroDivisionError 예외가 발생합니다except 블록이 이를 캐치하고 "0으로 나눌 수 없습니다."를 출력합니다.

 

반응형

2. 다양한 예외 처리

try:
    # 코드
except (RuntimeError, TypeError, NameError):
    # 여러 예외 처리

else와 finally
else 블록: 모든 except 블록이 실행되지 않을 때 실행됩니다. 즉, 예외가 발생하지 않았을 때 실행할 코드를 담습니다.
finally 블록: 예외 발생 여부와 관계없이 항상 실행됩니다. 주로 리소스 해제 등의 정리 작업에 사용됩니다.

try:
    print("try 블록 실행")
except Exception as e:
    print(f"예외 발생: {e}")
else:
    print("예외가 발생하지 않았습니다.")
finally:
    print("항상 실행되는 finally 블록")

 

2. 파일처리

파일을 다룰 때 발생할 수 있는 예외를 처리하는 방법입니다. 파일이 존재하지 않을 때 FileNotFoundError 예외가 발생합니다.

try:
    with open('non_existent_file.txt', 'r') as f:
        content = f.read()
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")

사용자 입력 처리
사용자 입력을 처리하면서 발생할 수 있는 ValueError를 처리하는 예제입니다. 사용자가 숫자가 아닌 다른 값을 입력했을 때 이를 처리합니다.

더보기

try:
    user_input = int(input("숫자를 입력하세요: "))
    print(f"입력한 숫자는 {user_input}입니다.")
except ValueError:
    print("숫자가 아닌 값을 입력하였습니다. 숫자를 입력해주세요.")

리스트 인덱스 처리

리스트에서 발생할 수 있는 IndexError 예외를 처리하는 방법입니다. 사용자가 리스트의 범위를 벗어나는 인덱스에 접근하려 할 때 이를 처리합니다.

더보기

my_list = [1, 2, 3]

try:
    print(my_list[5])
except IndexError:
    print("리스트의 범위를 벗어난 인덱스에 접근하려고 했습니다.")

복수의 예외 처리

하나의 try 블록에서 여러 유형의 예외를 처리하는 방법입니다. 이는 다양한 오류 상황을 하나의 코드 블록에서 처리할 수 있게 해줍니다.

try:
    # 다양한 예외 발생 가능성이 있는 코드
    # 예를 들어, 0으로 나누기 시도 또는 잘못된 타입의 연산 시도
    result = 1 / 0
except (ZeroDivisionError, TypeError) as e:
    print(f"오류 발생: {e}")

728x90

이러한 예제들은 기본적인 사용법부터 복잡한 상황에서의 예외 처리 방법까지 다양한 시나리오를 보여주며, 블로그 독자들이 try-except 구문을 이해하고 자신의 프로젝트에 적용하는 데 도움이 될 것입니다.

마무리

- 이번 포스팅은 try-except  예외 처리 구문에 대해 알아봤습니다.

 
 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형

+ Recent posts