66 lines
2.4 KiB
Markdown
66 lines
2.4 KiB
Markdown
# 예외 처리
|
|
예외란 프로그램 실행 중 예상치 못한 상황이나 오류를 의미합니다. 예를 들어, 존재하지 않는 파일을 열려고 하거나, 0으로 나누는 연산을 시도하는 경우 등이 있습니다. 파이썬에서는 이러한 예외 상황을 처리하기 위해 try-except 블록을 사용합니다.
|
|
|
|
* 프로그램 안정성: 예상치 못한 상황에 대해 미리 대비하여 프로그램이 비정상적으로 종료되는 것을 방지합니다.
|
|
* 오류 메시지 제공: 사용자에게 발생한 문제에 대한 정보를 제공하여 문제 해결을 돕습니다.
|
|
* 코드 가독성 향상: try-except 블록을 사용하면 코드의 흐름을 명확하게 나타낼 수 있습니다.
|
|
|
|
## 예외의 종류
|
|
* ZeroDivisionError: 0으로 나누는 경우
|
|
* TypeError: 자료형이 맞지 않을 때
|
|
* ValueError: 올바르지 않은 값이 사용될 때
|
|
* IndexError: 리스트 인덱스가 범위를 벗어났을 때
|
|
* FileNotFoundError: 파일이 존재하지 않을 때
|
|
|
|
그 외 다양한 예외가 있습니다.
|
|
|
|
## try except
|
|
```python
|
|
try:
|
|
# 예외가 발생할 가능성이 있는 코드
|
|
except 예외 종류:
|
|
# 예외가 발생했을 때 실행할 코드
|
|
```
|
|
* try 블록: 예외가 발생할 가능성이 있는 코드를 작성합니다.
|
|
* except 블록: try 블록에서 예외가 발생하면 실행됩니다. 예외 종류 부분에 특정 예외를 지정하거나 모든 예외를 처리할 수 있습니다.
|
|
|
|
```python
|
|
try:
|
|
num1 = int(input("첫 번째 숫자를 입력하세요: "))
|
|
num2 = int(input("두 번째 숫자를 입력하세요: "))
|
|
result = num1 / num2
|
|
print(result)
|
|
except ZeroDivisionError:
|
|
print("0으로 나눌 수 없습니다.")
|
|
except ValueError:
|
|
print("숫자를 입력하세요.")
|
|
```
|
|
|
|
## try except finally
|
|
finally 블록은 예외 발생 여부와 상관없이 항상 실행되는 코드 블록입니다. 주로 파일 닫기, 자원 해제 등의 작업을 수행합니다.
|
|
```python
|
|
try:
|
|
f = open("data.txt", "r")
|
|
# 파일 읽기 작업
|
|
except FileNotFoundError:
|
|
print("파일이 없습니다.")
|
|
finally:
|
|
f.close() # 파일 닫기
|
|
```
|
|
|
|
## 예외 발생시키기
|
|
raise 키워드를 사용하여 직접 예외를 발생시킬 수 있습니다.
|
|
|
|
```python
|
|
raise ValueError("잘못된 값입니다.")
|
|
```
|
|
|
|
## 사용자 정의 예외
|
|
```python
|
|
class MyError(Exception):
|
|
pass
|
|
|
|
raise MyError("사용자 정의 예외 발생")
|
|
```
|
|
|