qpython segmentfault,Python自定义异常
Python和许多其他语言一样,支持异常处理。您可以用类似于try-catch的方式捕获、处理或抛出异常。Python的异常命名规则与Java略有不同。Java异常一般以异常结束,Python异常一般以错误结束。
常见异常
首先,让我们看看由于编码错误和其他原因可能出现的常见异常。打开Python解释器,然后键入代码,您应该会看到许多异常。
语法错误
系统错误最常见的原因是代码缩进错误,或者缺少分号、冒号和其他分隔符。比如下面这个例子。
如果01
Print())
“文件”,第1行
如果01
^
语法错误:异步同步
名字不对
这种异常通常是由于使用了未定义的名称。
福克尔
跟踪(mostrecentcalllast):
文件中的第1行
名称错误:未定义名称“他妈的”
零除法错误
这个例外是整数零除错误,通常发生在数学计算中。
1/0
跟踪(mostrecentcalllast):
文件中的第1行
零分割错误3360分割
错误的值
错误异常通常发生在类型转换失败时。
int(3fuck)).
跟踪(mostrecentcalllast):
文件中的第1行
值错误:invalidliteralforint(基数为10:“3 fuck
处理异常
渔获异常
使用try-catch结构(比如Java)来捕获异常与Python中的类似,但是使用except关键字来捕获异常。在下面的例子中,如果第一行中的fuck被注释掉,NameError异常将被抛出,并显示它在except子句中被捕获。
操=操!
尝试:
福克尔
除了名称错误:
Print (thisisanameerror))
您可以使用同一个子句捕获多个相似的异常。因此,except子句必须在括号中包含多个异常类型。
尝试:
福克尔
除了(错误的名称,错误的值):
Print (thisisanameerror))
如果需要使用不同的异常子句来捕获不同的异常,可以列出多个异常子句。如果抛出的异常是当前异常子句中异常的实例或子类,则所有异常都匹配当前子句。请注意,由于所有异常的父类都是exception,因此异常类型的异常必须放在最后,以防止其他异常子句被执行。
尝试:
福克尔
除了(错误的名称,错误的值):
Print (thisisanameerror))
执行错误:
print(thisisaystemerror))
例外情况除外:
Print (thisisaruntimeerror))
也可以省略最后一个异常子句的异常类型。这将捕获所有其他未捕获的异常。
尝试:
福克尔
除了(错误的名称,错误的值):
Print (thisisanameerror))
执行错误:
print(thisisaystemerror))
除了:
Print (thisisaruntimeerror))
如果需要检索异常信息,可以使用as关键字声明异常变量,并在异常子句中使用它们。
尝试:
福克尔
除了(错误的名称,错误的值)如ex:
Print (f thisisameerror: {ex})))))。
清理资源
如果异常处理语句包含系统资源(文件、网络连接、数据库连接等)。),您有义务在使用后立即释放资源。Python也提供了适当的机制。
资源释放主要通过两个子句来实现。第一个是else子句,只有在没有抛出异常时才执行。如有异常,此句不执行。第二个子句是finally子句,无论有无例外都会执行。有了这两个字,我们就可以优雅地关闭资源了。
尝试:
提高我的错误(
除了(错误的名称,错误的值)如ex:
Print (f thisisameerror: {ex})))))。
除了我的错误:
打印(这是我的错误))
否则:
Print (else子句))。
最后:
打印(thisisfinallyclause))
抛出异常
我们可以在适当的时候抛出一个异常,让上级调用者决定如何处理这个异常。
下面的示例引发一个自定义异常:自定义异常是继承该异常的类。定义后,使用raise语句引发异常。
类错误(异常):
传球
尝试:
提高我的错误(
除了(错误的名称,错误的值)如ex:
Print (f thisisameerror: {ex})))))。
除了我的错误:
打印(这是我的错误))
如果异常无法在except子句中处理,则必须将其再次抛出到更高的位置。请直接使用raise关键字。
尝试:
提高我的错误(
除了(错误的名称,错误的值)如ex:
Print (f thisisameerror: {ex})))))。
除了我的错误:
打印(这是我的错误))
席勒
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。