세 가지 중 하나를 반환 할 수있는 기능이 있습니다.
- 성공 (
True
) - 실패 (
False
) - 스트림 읽기 / 파싱 오류 (
None
)
내 질문은 True
또는 False
에 대해 테스트하지 않으면 결과가 무엇인지 어떻게 확인 해야하는지입니다. 아래는 내가 현재하고있는 방법입니다.
result = simulate(open("myfile"))
if result == None:
print "error parsing stream"
elif result == True: # shouldn't do this
print "result pass"
else:
print "result fail"
실제로 == True
부품 을 제거하는 것보다 간단 합니까 아니면 tri-bool 데이터 유형을 추가해야합니다. simulate
외부 프로그램이 오류로 처리하기를 원하면 로그를 기록하고 계속 하기 때문에 함수가 예외를 던지는 것을 원하지 않습니다 .
simulate
함수 내에서 나는 모든 예외를 포착합니다. 시뮬레이터에서 발생하는 나머지 프로그램 실행을 중지하고 다음 요소를 처리하는 것을 원하지 않습니다. 그러나 그 대답으로 인해 마음이 바뀌 었습니다.
simulate
잡을 수 있고 재 시도 할 수있는 것이 있다면 좋습니다. 그러나 "실패"하면 반환하지 않아야합니다 None
. 그것을 호출 한 스크립트에 예외를 제기해야합니다. 어느 쪽이든 simulate
이루어집니다. 리턴 None
은 적절한 예외를 발생 시키거나 예외가 simulate
처리를 위해 호출 스크립트로 전파되도록 허용하는 것만 큼 도움이되지 않습니다 .
except Exception:
대신 사용하십시오. 이와 함께, 모든 "진짜"오류를 잡아 Warning
와 StopIteration
. 그것은 수 KeyboardInterrupt
와 SystemExit
생각을 통해. 당신이 정말로 그것들을 잡으려면, 다른 외부 시도 / 제외 또는 의도가 명확하게 문서화되어있는 다른 구조를 사용하는 것이 가장 좋습니다. 이것은 "오류"가 아니기 때문입니다. (하지만 아마도 귀하의 경우에는 당신이 정말로 잡아 모든 하시겠습니까, 심지어는 Ctrl-C를 또는 방지 ... "거의 절대"말을하지 않았다 sys.exit()
종료에서, 등)