파이썬 - try-except 블록

안녕하세요, 미래의 파이썬 마스터들! 파이썬의 놀라운 오류 처리 세계를 안내해 드리게 되어 기쁩니다. 친절한 지역 컴퓨터 과학 교사로서, 저는 수많은 학생들이 오류에绊倒하는 것을 본 적이 많습니다. 하지만 걱정 마세요! 이 튜토리얼을 끝내면 당신은 프로처럼 예외를 처리할 수 있을 것입니다. 시작해보겠습니다!

Python - try-except Block

파이썬 Try-Except 블록

새 레시피를 요리하는 것을 상상해보세요. 모든 재료를 가지고 있는지는 모르지만, 저는 도전해보고 싶어요. 이것은 파이썬에서 try-except 블록이 하는 일과 정확히 같습니다 - 코드를 시도하고, 잠재적인 오류를 우아하게 처리합니다.

기본 구조는 다음과 같습니다:

try:
# 예외를 일으킬 수 있는 코드
except:
# 예외를 처리할 코드

간단한 예제를 살펴보겠습니다:

try:
number = int(input("숫자를 입력하세요: "))
result = 10 / number
print(f"10을 {number}로 나눈结果是 {result}")
except:
print("죄송합니다! 무엇인가 잘못되었습니다.")

이 코드에서:

  1. 사용자에게 숫자를 입력하도록 요청합니다.
  2. 10을 그 숫자로 나누려고 시도합니다.
  3. 무엇이든 잘못되면(예를 들어, 0이나 숫자가 아닌 것을 입력할 때), 우리는 오류를 잡고 친절한 메시지를 출력합니다.

이 코드를 다양한 입력으로 실행해보세요. 2를 입력한 후, 0을 입력한 후, "바나나"를 입력해보세요. 각 경우를 어떻게 처리하는지 확인해보세요?

여러 예외 처리

이제 더 구체적으로 살펴보겠습니다. 다양한 종류의 오류가 발생할 수 있으며, 우리는それ들을 다르게 처리하고 싶을 수 있습니다. 이는 다양한 유형의 상처에 대한 여러 첫 번째 구호-kit과 같습니다.

try:
number = int(input("숫자를 입력하세요: "))
result = 10 / number
print(f"10을 {number}로 나눈结果是 {result}")
except ValueError:
print("올바른 숫자가 아닙니다!")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다!")
except:
print("다른 무엇인가 잘못되었습니다.")

여기서 우리는 세 가지 시나리오를 처리합니다:

  1. 사용자가 숫자가 아닌 것을 입력할 때 (ValueError)
  2. 사용자가 0을 입력할 때 (ZeroDivisionError)
  3. 예상치 못한 오류

이 코드를 "오대", 0, 2와 같은 입력으로 실행하여 다르게 반응하는지 확인해보세요!

Try-Except 블록과 Else 절 사용

때로는 예외가 발생하지 않았을 때만 코드를 실행하고 싶습니다. 이 때는 else 절이 매우 유용합니다. 이는 모두 원활하게 진행되었을 때의 보상으로 생각할 수 있습니다!

try:
number = int(input("양수 숫자를 입력하세요: "))
if number <= 0:
raise ValueError("그것은 양수가 아닙니다!")
result = 10 / number
except ValueError as ve:
print(f"오류: {ve}")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다!")
else:
print(f"10을 {number}로 나눈结果是 {result}")
print("유효한 숫자를 입력해 주셔서 감사합니다!")

이 예제에서:

  1. 숫자가 양수인지 확인합니다.
  2. 만약 그렇지 않으면, 우리는 자신의 ValueError를 일으킵니다.
  3. 예외가 발생하지 않으면, else 블록이 실행되어 멋진 메시지를 주입니다.

Finally 절

마지막으로는 finally 절입니다. 이 블록은 예외가 발생했든 말든 항상 실행됩니다. 이는 요리 후 청소와 같이, 레시피가 성공했든 실패했든 무엇이든 실행됩니다.

try:
file = open("중요 데이터.txt", "r")
content = file.read()
result = 10 / int(content)
except FileNotFoundError:
print("해당 파일이 존재하지 않습니다!")
except ValueError:
print("해당 파일에 유효한 숫자가 없습니다!")
except ZeroDivisionError:
print("파일에 있는 숫자는 0입니다!")
else:
print(f"결과는: {result}")
finally:
print("파일을 닫는 중...")
file.close()

이 예제에서:

  1. 파일을 열고 그 안에 있는 숫자를 읽으려고 시도합니다.
  2. 다양한 잠재적인 오류를 처리합니다.
  3. 성공하면 결과를 출력합니다.
  4. 아무튼 finally 블록에서 파일을 닫습니다.

예외 처리 방법 요약

다음은 우리가 배운 예외 처리 방법을 요약한 편리한 표입니다:

메소드 설명 사용 사례
try 예외를 일으킬 수 있는 코드를 둘러싸는 항상 except, else, 또는 finally와 함께 사용
except 특정 예외를 처리하는 오류를 잡고 처리하는
else try 블록에서 예외가 발생하지 않으면 실행 try가 성공하면만 실행되는 코드
finally 예외가 발생했든 말든 항상 실행 정리 작업(예: 파일 닫기)
raise 수동으로 예외를 발생시키는 사용자 정의 오류 조건을 만드는

기억해주세요, 좋은 오류 처리는 안전벨트를 쓰는 것과 같습니다 - 필요할 때만 그 중요성을 느낍니다! 이 개념을 연습하면, 곧 프로처럼 강한, 오류에 저항할 수 있는 파이썬 코드를 작성할 수 있을 것입니다.

코딩을 즐겁게, 예외가 항상 우아하게 처리되기를 바랍니다!

Credits: Image by storyset