728x90
Traceback (most recent call last):
File "znote.py", line 40, in <module>
issue_target = str(issue_contents[19][1][1])
KeyError: 1
Traceback (most recent call last):
File "znote.py", line 40, in <module>
issue_target = str(issue_contents[19][1]['name'])
TypeError: string indices must be integers
에러가 나도 실행을 멈추면 안될때가 작업을 하다보면 생긴다.
내가 겪은 문제는 딕셔너리 조회 중 타입에러가 나면 조건문을 실행하지 않고 다음 값 조회하는 결과물을 원했다.
try:
#실행할 코드
except <Error>: #<Error>를 명시하지않고 except: 만 사용하면 모든 에러에 대해 예외처리가 됩니다.
#에러나면 처리할 코드
기본 예외처리 문법. 아래는 예시 코드이다. 쓰던 코드를 그대로 들고오면서 개인정보 키워드를 마구잡이로 지웠더니 실제로 돌아가는 코드인지는 잘 모르겠다. try ~ catch를 중점으로 보도록 하자
for title in list:
contents = title
try:
if contents[19][1]['name'] == target:
issue = contents[20][1]['name']
union = title
issue_union_result.append(union)
except TypeError:
#카테고리가 다르면 배열이 달라져서 타입에러가 발생하여 반복문이 중단되므로 예외처리 함
continue
아래의 continue는 반복문이라서 사용했는데, 파이썬에서는 pass를 사용할수있다(오류 회피). pass는 반복문이 아니어도 사용할 수있다.
그리고 무조건 실행시켜야할 코드가 있다면, finally를 사용한다. 보통 메모리 누수 방지를 위해 close() 함수 호출을 위해 사용한다.
try:
pass
finally:
exit()
728x90
'CI&CD > Python' 카테고리의 다른 글
[python] 알고리즘 풀이를 위한 함수 (0) | 2022.08.18 |
---|---|
[python]이메일 발송 (0) | 2022.08.02 |
[Python] requests.exceptions.SSLError: HTTPSConnectionPool (0) | 2022.07.13 |