首页 > 编程知识 正文

java如何抛出自定义异常,python抛出自定义异常

时间:2023-05-05 11:57:37 阅读:16915 作者:1628

一.用python捕捉异常用python捕捉异常的模块try/except。 其中,python有以下几种定制异常:

由不存在AttributeError调用的方法引起的异常

EOFError遇到了文件末尾出现的异常

ImportError导入模块错误导致的异常

索引错误列表月越界引起的异常

文件打开错误等IOError I/O操作引起的异常

KeyError使用词典中不存在的关键字导致的异常

使用不存在NameError的变量名导致的异常

由于TabError语句中的块缩进不正确而引发的异常

值错误搜索列表中没有值异常

ZeroDivisionError除数为零导致的异常

1.1捕捉异常,首先用一个代码投出看到python异常的捕捉。 为了在此能清楚地看到异常,使用跟踪后退模块跟踪了异常

importsysimporttracebackclassdefineerror 3360 def _ init _ (self ) : pass @ staticmethoddeffun _ error (0执行元件识别) traceback.print_TB(info[2] ) traceback.print_exc ) (print_TB ) prinfo ) traceback.print652 'here is error if _ name _==' _ main _ _ ' : obj=define error (obj.fun _ error ) )输出结果跟踪)

1.2在异常跟踪和异常输出上,可以看出跟踪包正在跟踪异常。 接下来对异常的处理进行说明

classdefineerror 3360 def _ init _ (self ) : pass @ staticmethoddeffun _ error (3360 try : c=1/0 exceptexceptionase : info=sys.exc _ info (trace back.print _ TB ) info[2]#traceback.print_exc ) )打印if _ name _==' _ _ main _ ' : obj=define error (obj.fun _ error ) ) ) ) 65 zerodivision * * * * * * *文件(d33338 ) )、divisionbyzero、)、**** line 50、infun_errorc=1/0sys.exc_info (排除异常第二个元素是异常类型ZeroDivisionError类的实例。 第三个元素是跟踪后退对象。 其中,前两个元素提供了抛出异常的类型和描述信息。 对于第三个元素,它是跟踪后退对象,不能直接看到有关异常的信息。 需要进一步处理

捕获try:func(except: )异常,将异常传播信息输出到控制台traceback.print_exc ),并将异常传播信息输出到指定文件的traceback.print_exc ) file

1.3找不到多异常捕获try:print(1/0) except(zerodivisionerror、TypeError、NameError ) : # NameError为名称)变量)时打印

1.4 classdefineerror 3360 def _ init _ (self ) : pass @ staticmethoddeffun _ error (: try : c=1/0exce er print (* ) ' (if _ name _==' _ _ main _ ' 3360 obj=define error ) ) obj.funch但是,因为会隐藏没有想到的错误,所以不推荐。 更好的选择是使用except Except as e检查异常对象。 这也会导致异常的忽略,而不是从Except类派生的。 像SystemExit和KeyboradInterrupt那样,都是从baseexcept(except的超类)派生出来的

1.5 try和raise组合定制异常#首先是异常抛出模块classmydefineerror(exception ) :def_init_ ) self, 自定义名称, reason (: self.name=nameself.reason=reasonclasstest : def _ init _ (self ) 3360 pass @ staticmethodefwww try 3360 )参数小于默认值) ) exceptmydefineerrorase :打印) hereiserrorinfo,nameis % s 3360 reason is % s ' % (e.name,e.reason )

自定义异常模块可以捕获您在模块中定义的一些异常信息,但无法捕获系统中内置的异常信息

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。