안녕하세요! 오늘은 파이썬에서의 예외 처리 방법 중 하나인 try-except 구문에 대해 알아보려 합니다. 파이썬에서 예외 처리는 프로그램 실행 중 발생할 수 있는 에러를 다루는 데 도움을 줍니다. try-except 구문은 코드가 예외를 발생시킬 가능성이 있는 부분을 실행하면서 발생한 예외를 처리하는 데 사용됩니다.
기본적인 try-except 구문 사용법
try-except 구문의 기본 구조는 다음과 같습니다.
try:
# 예외가 발생할 수 있는 코드
except 예외타입:
# 예외 발생 시 실행할 코드
Try-except 구문 예제
이제 간단한 예제로 try-except 구문을 사용해봅시다.
예제 1: 나눗셈
다음 코드는 두 숫자를 나누는 코드입니다. 숫자 0으로 나눌 경우, "ZeroDivisionError"가 발생합니다.
pythonCopy code
try:
num1 = int(input("첫 번째 숫자를 입력하세요: "))
num2 = int(input("두 번째 숫자를 입력하세요: "))
result = num1 / num2
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
else:
print("결과: ", result)
예제 2: 파일 처리
다음 코드는 파일을 열어서 내용을 읽어오는 코드입니다. 파일이 존재하지 않을 경우, "FileNotFoundError"가 발생합니다.
filename = "example.txt"
try:
with open(filename, 'r') as file:
contents = file.read()
except FileNotFoundError:
print(f"{filename} 파일을 찾을 수 없습니다.")
else:
print(contents)
try-except 구문에 여러 개의 예외 처리하기
try-except 구문에서는 여러 개의 예외를 처리할 수도 있습니다. 이때는 except 문을 여러 번 사용하거나, 한 줄에 여러 개의 예외 타입을 적어줄 수 있습니다.
예제 3: 여러 개의 예외 처리
다음 코드는 사용자로부터 입력받은 숫자를 제곱하는 코드입니다. 여러 가지 예외가 발생할 수 있습니다.
try:
num = int(input("정수를 입력하세요: "))
result = num ** 2
except ValueError:
print("정수가 아닌 값이 입력되었습니다.")
except TypeError:
print("올바른 데이터 타입이 아닙니다.")
except Exception as e:
print(f"기타 에러가 발생했습니다: {e}")
else:
print("결과: ", result)
위의 코드에서는 ValueError, TypeError, 그리고 그 외 모든 예외를 처리하고 있습니다.
try-except 구문을 사용하면 프로그램이 예외 발생 시 중
단순히 종료되지 않고 적절한 메시지를 출력한 후 계속 실행될 수 있습니다. 이를 통해 사용자에게 더 나은 경험을 제공할 수 있습니다.
try-except-else-finally 구문
try-except 구문에는 else와 finally 절을 추가할 수도 있습니다. else 절은 try 블록에서 예외가 발생하지 않을 경우 실행되는 코드를 작성하는 데 사용됩니다. finally 절은 예외 발생 여부와 관계없이 항상 실행되는 코드를 작성하는 데 사용됩니다.
try:
# 예외가 발생할 수 있는 코드
except 예외타입:
# 예외 발생 시 실행할 코드
else:
# 예외가 발생하지 않았을 때 실행할 코드
finally:
# 예외 발생 여부와 관계없이 항상 실행할 코드
예제 4: try-except-else-finally 사용
다음 코드는 파일을 열어서 내용을 읽어오는 코드입니다. 파일이 존재하지 않을 경우, "FileNotFoundError"가 발생합니다.
filename = "example.txt"
try:
with open(filename, 'r') as file:
contents = file.read()
except FileNotFoundError:
print(f"{filename} 파일을 찾을 수 없습니다.")
else:
print("파일을 성공적으로 읽었습니다.")
print(contents)
finally:
print("프로그램 종료")
위 코드에서 else 절은 파일을 성공적으로 읽었을 때 실행되고, finally 절은 프로그램 종료 메시지를 출력합니다.
대표적인 예외 발생 경우
1. ZeroDivisionError: 숫자를 0으로 나누려 할 때 발생합니다.
result = 10 / 0
2. FileNotFoundError: 존재하지 않는 파일을 여는 경우 발생합니다.
with open("nonexistent_file.txt", 'r') as file:
content = file.read()
3. TypeError: 잘못된 자료형을 사용할 때 발생합니다.
result = "hello" + 3
4. ValueError: 올바르지 않은 값이 사용되는 경우 발생합니다.
int("hello")
5. NameError: 존재하지 않는 변수나 함수를 사용할 때 발생합니다.
print(nonexistent_variable)
6. IndexError: 리스트의 범위를 벗어난 인덱스에 접근할 때 발생합니다.
my_list = [1, 2, 3]
print(my_list[3])
예외 발생시 출력하기
try-except 구문을 사용하여 발생한 예외를 출력하려면, 다음과 같이 작성합니다.
try:
# 예외가 발생할 수 있는 코드
except Exception as e:
print(f"예외가 발생했습니다: {e}")
예를 들어, 숫자를 0으로 나누는 경우를 처리하려면 다음과 같이 작성할 수 있습니다.
try:
result = 10 / 0
except Exception as e:
print(f"예외가 발생했습니다: {e}")
사용자 정의 예외 발생시키기
사용자가 직접 예외를 발생시키고 싶다면, raise 키워드를 사용하여 원하는 예외를 발생시킬 수 있습니다.
raise 예외타입("에러 메시지")
예를 들어, 나이가 음수인 경우에 예외를 발생시키려면 다음과 같이 작성할 수 있습니다.
age = -1
if age < 0:
raise ValueError("나이는 음수일 수 없습니다.")
이러한 사용자 정의 예외를 처리하려면, try-except 구문을 사용하여 해당 예외를 처리할 수 있습니다.
try:
if age < 0:
raise ValueError("나이는 음수일 수 없습니다.")
except ValueError as e:
print(f"예외가 발생했습니다: {e}")
또한, 사용자가 직접 예외 클래스를 만들어서 사용할 수도 있습니다. 이때는 파이썬의 기본 예외 클래스인 `Exception` 클래스를 상속받아 사용합니다.
예를 들어, 나이가 음수일 경우에 발생하는 사용자 정의 예외 클래스를 작성해봅시다.
class NegativeAgeError(Exception):
def __init__(self, age):
self.age = age
def __str__(self):
return f"나이는 음수일 수 없습니다. 입력한 나이: {self.age}"
이제 위에서 작성한 사용자 정의 예외 클래스를 사용하여 나이가 음수일 때 예외를 발생시키고 처리해봅시다.
try:
age = -1
if age < 0:
raise NegativeAgeError(age)
except NegativeAgeError as e:
print(f"예외가 발생했습니다: {e}")
정리
오늘 배운 내용을 정리해보면 다음과 같습니다.
- try-except 구문은 예외 처리를 위해 사용됩니다.
- 여러 개의 예외를 처리하기 위해서는 except 문을 여러 번 사용하거나, 한 줄에 여러 개의 예외 타입을 적어줄 수 있습니다.
- try-except 구문에는 else와 finally 절을 추가할 수 있습니다. else 절은 예외가 발생하지 않았을 때 실행되는 코드를 작성하는 데 사용되며, finally 절은 예외 발생 여부와 관계없이 항상 실행되는 코드를 작성하는 데 사용됩니다.
- 대표적인 예외 발생 경우
- 예외 발생 시 출력
- 사용자 정의 예외
이상으로 파이썬의 try-except 구문 사용법에 대한 설명을 마칩니다. 이 포스트를 통해 파이썬에서 예외 처리를 어떻게 할 수 있는지 이해하셨기를 바랍니다. . 파이썬에서 대표적으로 발생하는 예외들과 예외 발생 원인, 예외 발생시 출력하는 방법, 그리고 사용자가 직접 예외를 발생시키는 방법을 알아보았습니다. 앞으로 프로그램을 작성하시면서 발생할 수 있는 예외를 미리 생각하고 적절한 예외 처리를 사용하여 더 안정적인 코드를 작성하시길 바랍니다.
'파이썬기초(Python Basic)' 카테고리의 다른 글
파이썬에서 문자열 다루기: 완벽 설명 (0) | 2023.05.18 |
---|---|
파이썬 그래프 그리기 (0) | 2023.05.08 |
파이썬 세트(set) 자료형 사용법 (0) | 2023.04.30 |
파이썬에서 파일 입출력 이해하기 (0) | 2023.04.29 |
파이썬 딕셔너리(Dictionary) 자료형 (0) | 2023.04.26 |
댓글