qpython segmentfault,Python自定义异常

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: