[PYTHON] 파이썬에서 모든 예외를 잡기위한 나쁜 생각
PYTHON파이썬에서 모든 예외를 잡기위한 나쁜 생각
파이썬에서 모든 예외를 잡는 것은 왜 나쁜 생각입니까?
나는 except : clause를 사용하여 모든 예외를 잡는 것이 SystemExit, KeyboardInterrupt 및 GeneratorExit의 '특별한'파이썬 예외를 잡아낼 수도 있음을 이해합니다. 그렇다면 예외를 제외한 모든 예외를 잡기 위해 예외 조항을 사용하지 않는 이유는 무엇입니까?
해결법
-
==============================
1.대단히 비특이적이며 예외로 인해 흥미로운 것을 할 수 없기 때문입니다. 더욱이, 모든 예외를 포착하는 경우에는 일어나는 상황을 알지 못하는 많은 예외가있을 수 있습니다 (이로 인해 애플리케이션이 실제로 이유를 알지 못하면 실패 할 수 있음). 처리 할 필요가있는 예외와 처리 방법을 구체적으로 예측할 수 있어야합니다 (처음에는 문서 또는 실험을 읽음). 그러나 처음부터 맹목적으로 모든 것을 억압하면 절대 알 수 없습니다.
대단히 비특이적이며 예외로 인해 흥미로운 것을 할 수 없기 때문입니다. 더욱이, 모든 예외를 포착하는 경우에는 일어나는 상황을 알지 못하는 많은 예외가있을 수 있습니다 (이로 인해 애플리케이션이 실제로 이유를 알지 못하면 실패 할 수 있음). 처리 할 필요가있는 예외와 처리 방법을 구체적으로 예측할 수 있어야합니다 (처음에는 문서 또는 실험을 읽음). 그러나 처음부터 맹목적으로 모든 것을 억압하면 절대 알 수 없습니다.
그래서, 대중적인 요청에 의해, 여기에 예가 있습니다. 프로그래머는 Python 코드를 작성하고 IOError를 얻습니다. 더 조사하는 대신 그녀는 모든 예외를 잡기로 결정합니다.
def foo(): try: f = open("file.txt") lines = f.readlines() return lines[0] except: return None
그녀는 자신의 방식으로 문제를 인식하지 못합니다. 파일이 존재하고 액세스 가능하지만 비어 있다면 어떻게해야합니까? 그런 다음이 코드는 IndexError를 발생시킵니다 (목록 행이 비어 있으므로). 그래서 그녀는 왜 그녀가 점점 더 많은 시간을 보냈 을까? 파일이 존재할 때이 함수에서 None을 반환하고, 오류를 포착하는 데있어 더 구체적 일지 모르는 뭔가를 깨닫지 못하면 잠글 수 없습니다. 있다.
-
==============================
2.아마도 각 예외를 다르게 처리하기를 원할 것입니다. Encoding 문제 나 OS 하나를 가진 것보다 KeyInterrupt를 갖는 것은 똑같지는 않습니다 ... 특정 예외를 하나씩 잡을 수 있습니다.
아마도 각 예외를 다르게 처리하기를 원할 것입니다. Encoding 문제 나 OS 하나를 가진 것보다 KeyInterrupt를 갖는 것은 똑같지는 않습니다 ... 특정 예외를 하나씩 잡을 수 있습니다.
try: XXX except TYPE: YYY except TYPE: ZZZ
from https://stackoverflow.com/questions/10594113/bad-idea-to-catch-all-exceptions-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 사전에 항목을 삭제 한 후 메모리를 되찾기 (0) | 2018.11.09 |
---|---|
[PYTHON] 지수 형식 / 과학 표기법이 아닌 일반 형식으로 부동 소수점 숫자 인쇄 (0) | 2018.11.09 |
[PYTHON] 특정 정수가 목록에 있는지 확인하는 방법 (0) | 2018.11.09 |
[PYTHON] Python을 사용하여 Spark에서 두 개의 RDD 테이블의 기본 조인을 어떻게 수행합니까? (0) | 2018.11.09 |
[PYTHON] 메모리에 큰 목록을 유지하는 대안 (파이썬) (0) | 2018.11.09 |