Python 异常基类
像其他高级语言一样,Python 中也有一些异常。当出现问题时,它会引发异常。存在不同类型的异常,例如 **ZeroDivisionError、AssertionError** 等。所有异常类都派生自 BaseException 类。
代码可以运行内置异常,我们也可以在代码中引发这些异常。用户可以从 **Exception** 类或 **Exception** 类的任何其他子类派生自己的异常。
BaseException 是所有其他异常的基类。用户定义的类不能直接从此类派生,要派生用户定义的类,我们需要使用 Exception 类。
Python 异常层次结构如下所示。
- BaseException
- Exception
- ArithmeticError
- FloatingPointError
- OverflowError
- ZeroDivisionError
- AssertionError
- AttributeError
- BufferError
- EOFError
- ImportError
- ModuleNotFoundError
- LookupError
- IndexError
- KeyError
- MemoryError
- NameError
- UnboundLocalError
- OSError
- BlockingIOError
- ChildProcessError
- ConnectionError
- BrokenPipeError
- ConnectionAbortedError
- ConnectionRefusedError
- ConnectionResetError
- FileExistsError
- FileNotFoundError
- InterruptedError
- IsADirectoryError
- NotADirectoryError
- PermissionError
- ProcessLookupError
- TimeoutError
- ArithmeticError
- ReferenceError
- RuntimeError
- NotImplementedError
- RecursionError
- StopIteration
- StopAsyncIteration
- SyntaxError
- IndentationError
- TabError
- IndentationError
- SystemError
- TypeError
- ValueError
- UnicodeError
- UnicodeDecodeError
- UnicodeEncodeError
- UnicodeTranslateError
- UnicodeError
- Warning
- BytesWarning
- DeprecationWarning
- FutureWarning
- ImportWarning
- PendingDeprecationWarning
- ResourceWarning
- RuntimeWarning
- SyntaxWarning
- UnicodeWarning
- UserWarning
- GeneratorExit
- KeyboardInterrupt
- SystemExit
问题 - 在此问题中,有一个员工类。条件是,员工的年龄必须大于 18 岁。
我们应该创建一个用户定义的异常类,它是 Exception 类的子类。
示例代码
class LowAgeError(Exception): def __init__(self): pass def __str__(self): return 'The age must be greater than 18 years' class Employee: def __init__(self, name, age): self.name = name if age < 18: raise LowAgeError else: self.age = age def display(self): print('The name of the employee: ' + self.name + ', Age: ' + str(self.age) +' Years') try: e1 = Employee('Subhas', 25) e1.display() e2 = Employee('Anupam', 12) e1.display() except LowAgeError as e: print('Error Occurred: ' + str(e))
输出
The name of the employee: Subhas, Age: 25 Years Error OccurredThe age must be greater than 18 years
广告