Python异常基类

像其他高级语言一样,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