본문 바로가기

main/Python

파이썬 예외 처리 try ... except 문 활용하기

간단한 코드로 바로 결과가 나오는 프로그램이라면 상관 없지만

긴 시간 돌려놔야 하는 코드에서 중간에 에러가 발생하여 동작이 끊긴다면

그야말로 말잇못... 다시 처음부터 할 생각에 아득해진다.

 

간만에 크롤링 작업을 하고 있었는데 URL이 유효하지 않은 케이스가 있어서

그 때의 에러 처리를 해주었다.

 

  try:
    URL = lines[i]

    options = webdriver.ChromeOptions()
    options.add_argument('headless')  # 새 창 띄우지 않음

    driver = webdriver.Chrome(executable_path='chromedriver', options=options)
    driver.get(url=URL)

    target = driver.find_element(By.TAG_NAME, "li").text

  except KeyboardInterrupt: return
  except: print(error, "사이트 방문 불가 등의 에러 발생")

  else: 
    total_word_in_domain += target.split()

  finally:
    print(URL, 'success\n')
    i += 1
    total_url_count += 1

 

try:

  내가 수행할 작업들

except 예외 발생시: 수행할 작업

except 또 다른 예외 발생시: 수행할 작업

else: 오류가 발생하지 않았을 경우 수행할 작업

finally: 오류가 났던 안 났던 try 작업이 다 끝나면 수행할 작업

 

처음에 KeyboardInterrupt 없이

URL 오류가 발생했을 때 로그만 출력하고 다음 단계로 넘겼더니,

프로그램을 종료하고 싶을 때 Ctrl + C 를 눌러도 에러라고 인식을 안 하는지 종료가 안 되는 거다ㅋㅋㅋ

그래서 bash를 창 채로 닫아버렸는데 무튼,

 

KeyboardInterrupt 상황에서는 return 시켜서 나올 수 있게 해주고,

이외의 어떤 모든 에러가 발생했을 때는 로그만 찍고 계속 다음 작업을 진행할 수 있게 해주었다.