像其他高级语言一样,python中也有一些例外。发生问题时,将引发异常。有不同种类的异常,例如ZeroDivisionError,AssertionError等。所有异常类都派生自BaseException类。
该代码可以内置在异常中运行,或者我们也可以在代码中引发这些异常。用户可以从派生自己的异常异常类,或任何其他子类的异常类。
BaseException是所有其他异常的基类。用户定义的类不能直接从该类派生,要派生用户定义的类,我们需要使用Exception类。
Python异常层次结构如下所示。
BaseException
例外
BlockingIOError
ChildProcessError
连接错误
BrokenPipeError
ConnectionAbortedError
ConnectionRefusedError
ConnectionResetError
UnboundLocalError
IndexError
KeyError
ModuleNotFoundError
FloatingPointError
OverflowError
ZeroDivisionError
ArithmeticError
断言错误
AttributeError
BufferError
EOF错误
ImportError
LookupError
MemoryError
NameError
OSError
FileExistsError
FileNotFoundError
中断错误
IsADirectoryError
NotADirectoryError
PermissionError
ProcessLookupError
TimeoutError
ReferenceError
RuntimeError
NotImplementedError
递归错误
StopIteration
StopAsyncIteration
语法错误
TabError
IndentationError
系统错误
TypeError
ValueError
UnicodeDecodeError
UnicodeEncodeError
UnicodeTranslateError
UnicodeError
警告
字节警告
弃用警告
未来警告
导入警告
待弃用警告
资源警告
运行时警告
语法警告
Unicode警告
用户警告
GeneratorExit
键盘中断
系统退出
问题-在此问题中,有一类雇员。条件是,雇员的年龄必须大于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