위험한 연산만 try에 넣어
except는 위에서부터 처음 맞는 예외 타입을 처리해. try 범위를 넓히면 뒤쪽 프로그래밍 오류까지 예상한 실패로 오해할 수 있어.
else와 finally는 역할이 다르다
else는 try가 예외 없이 끝난 뒤 실행되어 성공 뒤 작업을 분리하고, finally는 성공·실패·반환과 관계없이 정리를 맡아. finally의 return이나 새 예외가 원래 실패를 가리지 않게 작게 유지해.
타입 없는 except:는 KeyboardInterrupt와 SystemExit까지 잡으므로 피하고, 회복할 수 있는 가장 좁은 타입을 골라.