파이썬에서 사용자 정의 예외를 작성할 때마다 클래스 Exception
에서 확장해야한다. 제 질문은 예외 클래스의 수퍼 클래스 인 BaseException
에서 확장 할 수 없으며 Exception
은 서브 클래스도 BaseException
입니다.왜 예외를 수퍼 클래스로 사용해야 하는가? BaseException
4
A
답변
7
BaseException
에는 예외 메커니즘을 사용하지만 대부분의 사람들이 포기해서는 안되는 KeyboardInterrupt
및 SystemExit
등이 있습니다. Java의 Throwable
과 비슷합니다. BaseException
에서 직접 파생되는 것은 일반적으로 finally
블록과 컨텍스트 관리자 __exit__
메서드를 실행하여 리소스를 해제하는 동안 시스템을 종료하기위한 것입니다. Python2 documentation 당
3
, BaseException
의 유도체 네 가지 예외가 있습니다
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
Exception
당신처럼 그들을 잡으려고하지 않으려는 일반적으로 즉, 실제로 오류가없는없는 세 가지 그들은 오류입니다. BaseException
이 Python2.5에서 추가되었습니다 (그 전에는 BaseException
이 없었고 다른 예외는 Exception
에서 서브 클래 싱되었습니다).
물론 가능합니다. 당신이 *해야 할 것은 다른 질문입니다. 파이썬은 발에서 자신을 쏠 수있게하기 위해 조금 더 열심히 노력하고 있습니다.하지만 당신이 주장한다면, 아무도 당신을 지키지 않을 것입니다. :) –