2025-01-20T02:26:20
This commit is contained in:
65
doc/09_exception.md
Normal file
65
doc/09_exception.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 예외 처리
|
||||
예외란 프로그램 실행 중 예상치 못한 상황이나 오류를 의미합니다. 예를 들어, 존재하지 않는 파일을 열려고 하거나, 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("사용자 정의 예외 발생")
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user