先决条件- 本文是异常处理的扩展。 当代码出错时,Python会抛出错误和异常,这可能会导致程序突然停止。Python还通过try-except提供了一种异常处理方法。一些最常见的标准异常包括Indexer错误、ImportError、IOError、ZeroDivisionError、TypeError和FileNotFoundError。用户可以使用exception类创建自己的错误。
创建用户定义的异常
程序员可以通过创建新的异常类来命名自己的异常。异常需要直接或间接地从Exception类派生。虽然不是强制性的,但大多数例外情况都是以 “错误” 类似于python中标准异常的命名。例如:
python
# A python program to create user-defined exception # class MyError is derived from super class Exception class MyError(Exception): # Constructor or Initializer def __init__( self , value): self .value = value # __str__ is to print() the value def __str__( self ): return ( repr ( self .value)) try : raise (MyError( 3 * 2 )) # Value of Exception is stored in error except MyError as error: print ( 'A New Exception occured: ' ,error.value) |
输出:
('A New Exception occured: ', 6)
了解所有关于异常类的信息
要了解有关类异常的更多信息,请运行下面的代码
python
help (Exception) |
从超类异常派生错误
当模块需要处理多个不同的错误时,会创建超类异常。实现这一点的常见方法之一是为该模块定义的异常创建基类。此外,还定义了各种子类,以便为不同的错误条件创建特定的异常类。
python
# class Error is derived from super class Exception class Error(Exception): # Error is derived class for Exception, but # Base class for exceptions in this module pass class TransitionError(Error): # Raised when an operation attempts a state # transition that's not allowed. def __init__( self , prev, nex, msg): self .prev = prev self . next = nex # Error message thrown is saved in msg self .msg = msg try : raise (TransitionError( 2 , 3 * 2 , "Not Allowed" )) # Value of Exception is stored in error except TransitionError as error: print ( 'Exception occured: ' ,error.msg) |
输出:
('Exception occured: ', 'Not Allowed')
如何使用标准异常作为 A. 底层? 运行时错误是在生成的错误不属于任何类别时引发的标准异常类。这个程序演示了如何使用运行时错误作为基类,使用网络错误作为派生类。以类似的方式,可以从Python的标准异常中派生一个异常。
python
# NetworkError has base RuntimeError # and not Exception class Networkerror(RuntimeError): def __init__( self , arg): self .args = arg try : raise Networkerror( "Error" ) except Networkerror as e: print (e.args) |
输出:
('E', 'r', 'r', 'o', 'r')
本文由 皮尤斯门战 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。