이 파일은 제가 python 기초 강의를 들으면서 필기했던 내용들을 간단하게 정리한 것입니다.
혹시나 잘못된 정보가 포함되어있을수도 있기 때문에,
python 내용을 아시는 분들중에 잘못된 내용을 잡아내신 경우에는 댓글을 달아주시길 바랍니다.
-----------------------------------------------------------------------------------------------------
저는 이미 c언어를 공부한 이후에 파이썬을 공부하고 있는 터라, 필기 내용 자체가 아무래도 c언어와 파이썬의
차이점을 위주로 정리를 했습니다. 그렇기 때문에 python을 아예 모르시는 분은 이 문서를 읽기에 약간 불편함이
있을수도 있다는 점 양해바랍니다. c언어를 어느정도 알고 이 문서를 보는걸 추천드립니다 ㅎㅎ
저도 아직 초보라 틀린 내용이 있을수 있고, 만약 그 부분을 잡아내신다면 댓글로 알려주시길 바랍니다.
<< try~except 예외처리 >>
=> 코딩 중에 여러가지 이유로 발생할 수 있는 많은 에러들을 유연하게 다루고, 그 예외상황을 파악하게 하는 방법
=> 에러가 발생했을때 프로그램을 멈추게 하지 않고 별도 처리를 가능하게 하는 방법
<구조>
try:
에러가 발생할 가능성이 있는 코드
except 에러종류:
에러가 발생했을 경우 처리할 코드
<try~ except 사용하는 예시>
ex1)
text = '100%'
try:
number = int(text)
except ValueError:
print('{}는 숫자가 아니네요.'.format(text)) # 100%는 숫자가 아니네요.
ex2)
try:
a = 3/0
except ZeroDivisionError:
print("0으로 나눌수 없다.") #0으로 나눌수 없다.
->물론 try~except 대신 if ~ else를 사용할수도 있다.
ex)
list = [1,2,3,4]
idx = 5 #list에서 인덱스가 5인 원소는 없다. 즉 IndexError가 일어날 것이다!
try:
print(list.pop(idx)) #idx에 해당하는 list의 값을 출력!
except IndexError:
print('{} index의 값을 가져올 수 없습니다.'.format(idx)) #IndexError가 생기면 출력할 문장!
>> 이 코드를 if~else문으로 바꾸면,
list = [1,2,3,4]
idx = 5 #list에서 인덱스가 5인 원소는 없다. 즉 IndexError가 일어날 것이다!
if idx < len(list):
print(list.pop(idx))
else:
print('{} index의 값을 가져올 수 없습니다.'.format(idx))
>> 이것도 같은 결과가 나온다.
<<예외(에러)의 이름을 모를땐...?>>
==> except 뒤에 아무런 이름도 안 적어주면 됨!
try:
에러가 발생할 가능성이 있는 코드
except:
에러가 발생했을 경우 처리할 코드
<어디에서 에러가 발생했는지 모를땐...? (에러의 내용, 정보를 알고싶을땐?) >
>> except 뒤에 Exception as ex: 라고 쓰면 됨!
(물론 이때의 ex는 발생한 에러의 이름을 받아오는 '변수'이다.)
try:
list = []
print(list[0])
except Exception as ex: # 에러 종류
print('어떤 에러가 발생했나요?', ex) # ex는 발생한 에러의 이름을 받아오는 '변수'
# 어떤 에러가 발생했나요? list index out of range
출력결과 >> 어떤 에러가 발생했나요? list index out of range
<< raise >>
=> 사용자가 에러를 직접 일으키는 방법!
try:
...
raise 에러종류 #에러를 발생시킬 위치
...
exception 에러종류:
처리할 코드
=> <주로 사용하는 경우>
1. 입력을 이상한것을 입력했을때
2. 중첩된 for문을 한번에 종료시킬때
3. 나머지 다양한 여러 경우~~~
ex1) 입력을 이상한것을 입력했을때
def name(me, you):
list = ['홍길동','김첨지'] #홍길동, 김첨지 외 다른 문자열이 들어오면 ValueError를 발생시킴!
if me not in list:
raise ValueError
if you not in list:
raise ValueError
try:
name('홍길동', '박첨지')
except ValueError:
print('잘못된 값이 들어왔다!')
ex2) 중첩된 for문을 한번에 종료시킬때
list = [[1,3,5,7],[10,13,16,19]]
num = 17
try:
for idx,values in enumerate(list):
for value in values:
if value > num:
print('{}번째 인덱스 리스트에 {}을 넘는 원소가 있습니다.'.format(idx, num))
print('그것은 바로 {}입니다.'.format(value))
raise StopIteration # 예외발생시킴으로써 한번에 for 반복문 두개를 탈출해 나온다
except StopIteration:
print('정상종료..')
>> raise의 단점: 많이 사용하면 코드를 읽기 어려워진다..
'Python' 카테고리의 다른 글
python 간단 정리 - (16) (0) | 2020.03.07 |
---|---|
python 간단 정리 - (15) (0) | 2020.03.06 |
python 간단 정리 - (13) (0) | 2020.03.02 |
python 간단 정리 - (12) (0) | 2020.02.28 |
python 간단 정리 - (11) (0) | 2020.02.25 |