Python中的用户定义异常及其示例

先决条件- 本文是异常处理的扩展。 当代码出错时,Python会抛出错误和异常,这可能会导致程序突然停止。Python还通过try-except提供了一种异常处理方法。一些最常见的标准异常包括Indexer错误、ImportError、IOError、ZeroDivisionError、TypeError和FileNotFoundError。用户可以使用exception类创建自己的错误。

null

创建用户定义的异常

程序员可以通过创建新的异常类来命名自己的异常。异常需要直接或间接地从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主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享