1 예외 처리 (try~ except)
프로그램 작성시 작성자가 의도하지 않는 동작이나 예상치 못한 오류 처리하기 위해 사용된다. 또한 비정상적인 종료를 막기 위해 예외처리를 한다.
# 다음과 같이 존재하지않는 index를 호출할 시 IndexError가 발생한다.
>>> list1 = [1,2,3]
>>> list1[3]
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
list1[3]
IndexError: list index out of range
>>>
따라서 try~ excpet 문을 통해 오류를 처리해준다.
# 다음 0으로 값을 나눌 경우의 예외처리이다.
1
2
3
4
5
6
|
try:
print(3/0)
except:
print("0으로는 나눌 수 없습니다.")
else:
print("예외 없이 정상적으로 처리되었습니다.")
|
cs |
0으로는 나눌 수 없습니다.
>>>
위와 같이 try구문에서는 어떠한 내용을 실행할지를 작성하고 그 내용을 실행하는 과정에서 오류가 발생하면 except구문을 실행한다.
그리고 예외가 발생하지 않은 경우 else구문을 실행해 예외없이 프로그램이 동작한 것을 알려줄 수 있다.
# 다음은 두개의 정수를 입력받아서 나누는 프로그램
1
2
3
4
|
a = int(input("첫번째 정수>"))
b = int(input("두번째 정수>"))
print("두 수를 나눈 값은",a/b)
|
cs |
첫번째 정수>마
Traceback (most recent call last):
File "C:/pjs/Python/Day5-1_practice.py", line 3, in <module>
a = int(input("첫번째 정수>"))
ValueError: invalid literal for int() with base 10: '마'
>>>
위의 결과는 정수형타입에 문자열을 입력해주어 ValueError가 뜬 모습이다. 그리고 실행중간에 에러가 발생해 줄4인 다음 구문이 실행되지 않는다.
첫번째 정수>10
두번째 정수>0
Traceback (most recent call last):
File "C:/pjs/Python/Day5-1_practice.py", line 5, in
print("두 수를 나눈 값은",a/b)
ZeroDivisionError: division by zero
>>>
위의 결과는 나누는 값을 0으로 설정해 주어 ZeroDivisionError가 발생한 결과이다. 그리고 실행중간에 에러가 발생해 줄4인 다음 구문이 실행되지 않는다.
# 따라서 다음과 같이 코드를 수정해준다.
1
2
3
4
5
6
7
8
9
10
11
12
|
try:
a = int(input("첫번째 정수>"))
b = int(input("두번째 정수>"))
print("두 수를 나눈 값은",a/b)
except ValueError:
print("값이 적절하지 않습니다.") # ValueError 예외처리
except ZeroDivisionError: # ZeroDivisionError 예외처리
print("0으로 나눌 수 없습니다.")
print("예외 처리 구문")
|
cs |
첫번째 정수>10
두번째 정수>0
0으로 나눌 수 없습니다.
예외 처리 구문
위의 결과 두번째 정수로 0을 입력해도 ZeroDivisionError except 구문이 실행된 것을 볼 수 있다.
째 정수>나나
값이 적절하지 않습니다.
예외 처리 구문
위의 결과를 보면 값을 문자열로 입력해도 ValueError except 구문이 실행된 것을 볼 수 있다.
2 예외 처리 클래스 (Exception)
예외처리 구문은 자체가 클래스로 이루어져있다.
코드가 길어질 경우 예외처리 구문도 같이 길어져 명령문보다 예외처리문이 더 많아질 수 있다.
따라서 Exception이라고 하는 예외처리 클래스가 있는데 이를 사용한다.
1
2
3
4
5
6
7
8
9
10
11
|
try:
a = int(input("첫번째 정수>"))
b = int(input("두번째 정수>"))
print("두 수를 나눈 값은",a/b)
a = [1,2]
print(a[3])
except Exception as e:
print(e)
print("예외 처리 구문")
|
cs |
첫번째 정수>d
invalid literal for int() with base 10: 'd'
예외 처리 구문
>>>
값을 문자열로 입력해주어 ValueError가 났다. 하지만 Exception 클래스를 이용해주어 프로그램의 중단 없이 다음 코드가 실행된 모습을 볼 수 있다.
'Python' 카테고리의 다른 글
[Python 기초] 파이썬 모듈 - import , 모듈명 설정 (import as) 모듈 내 (from import) (1) | 2021.04.04 |
---|---|
[Python 기초] 파이썬 예외처리 - finally , raise , StopIteration 에러 (0) | 2021.04.03 |
[Python 기초] 파이썬 클래스 - 상속, 다중 상속 (0) | 2021.04.03 |
[Python 기초] 파이썬 클래스 - 생성자와 소멸자 (Constructor and Destructor) (0) | 2021.04.03 |
[Python 기초] 파이썬 클래스(class)와 인스턴스(instance) (0) | 2021.04.02 |
댓글