옳은 거 catch, 세상 다 X
sqlite3 모듈이 작은 exception 계층 raise. 알면 expected failure (제약 위반, locked DB) 를 모든 거 catch 안 하고 처리.
sqlite3.Error— 모든 거의 base.sqlite3.DatabaseError— 엔진 안의 모든 거.sqlite3.IntegrityError— 제약 위반 (UNIQUE, NOT NULL, FK, CHECK).sqlite3.OperationalError— 운영 이슈 (locked, malformed, disk full).sqlite3.ProgrammingError— 사용 에러 (closed cursor, 잘못된 param 수).sqlite3.InterfaceError— SQLite 보기 전 driver-side 문제.
Tip:
except sqlite3.IntegrityError 가 collide 가능 INSERT 의 'duplicate key' idiomatic 처리. UPSERT (track 4) 와 합치면 대부분 앱이 catch site 거의 없음.