Python:
에러 처리하기

어떻게 할까:

# 기본 try-except 블록
try:
    # 위험한 코드
    number = int(input("숫자를 입력하세요: "))
except ValueError:
    # 에러를 처리
    print("그건 숫자가 아닙니다!")

# 여러 예외 명시하기
try:
    # 다양한 예외를 일으킬 수 있는 코드
    result = 10 / int(input("나눗수를 입력하세요: "))
except ZeroDivisionError:
    print("이런! 0으로 나눌 수 없습니다.")
except ValueError:
    print("친구, 숫자가 필요해요.")

# else와 finally 사용하기
try:
    number = int(input("제곱할 숫자를 입력하세요: "))
except ValueError:
    print("숫자라고 했습니다!")
else:
    # 에러가 발생하지 않음
    print("당신의 숫자의 제곱은:", number**2)
finally:
    # 항상 실행
    print("이것을 시도해줘서 감사합니다!")

첫 번째 블록에 유효하지 않은 숫자를 입력했을 때의 예시 출력:

숫자를 입력하세요: 안녕
그건 숫자가 아닙니다!

깊이 파기

프로그래밍의 시작부터 에러 처리는 필수적이었습니다. 초기 접근법은 모든 위험한 작업 전에 조건을 확인하는 것과 같이 기본적이었습니다. 파이썬의 try-except 구문은 C++ 및 Java와 같은 오래된 언어의 예외 처리 유산에서 비롯되었으며, 이 과정을 단순화했습니다.

코드 블록을 try할 때, 파이썬은 모든 예외를 감시합니다. 에러가 발생하면 except 블록이 그것을 잡습니다. 당신은 잡고자 하는 구체적인 예외를 정할 수 있으며, 맨 except를 쓰면 모든 예외를 포착할 수 있습니다. 그러나, 구체적인 것부터 그것이 더 나은 접근법 입니다 - 그것은 정확하고, 모든 것을 잡는 그물이 아닙니다.

elsefinally는 이 개념에서 추가된 것들입니다. else 블록은 try 블록이 에러 없이 실행됐을 때 실행됩니다. finally는 무슨 일이 있어도 실행되는 믿을 수 있는 친구입니다 - 예를 들면, 정리 작업을 생각해보세요.

대안이 있습니까? 그럼요, 있죠. 일부 언어는 예외 대신 반환 코드를 사용합니다. 리소스를 처리하기 위한 with 구문이나 개발하는 동안 조건을 확인하는 assertions을 마주칠 수도 있습니다. 그러나 우리가 견고한 에러 처리 전략에 대해 이야기할 때, try-catch 모델은 그 가독성과 구조로 인해 두드러집니다.

참조하기

더 깊이 파고들기 위한 좋은 추가 자료들은 다음과 같습니다: