• python3.X中try/except


    包含try...except...在3.x版本中与2.x版本中的用法差异。

    1、先说差异:

      在2.x的python中用法实例:

    1    try:
    2         ......
    3    except Exception,e:
    4        raise e

      在3.x的python中用法实例:

    1      try:
    2          ......
    3      except Exception as e:
    4           raise e

    好啦,两者差异经过对比一目了然(感觉这里说格式更好一点,但是格式与用法的成分都有,算了,就这样吧)。啦啦啦~

    2、再说和异常相关的:

      与Python异常相关的关键字
    1   关键字           关键字说明
    2   raise 抛出/引发异常 3   try/except 捕获异常并处理 4   pass 忽略异常 5   as 定义异常实例(except IOError as e) 6   finally 无论是否出现异常,都执行的代码 7   else 如果try中的语句没有引发异常,则执行else中的语句的语句没有引发异常,则执行else中的语句

    3、使用try和except语句来捕获异常

     1 try:
     2      block
     3   except [exception,[data…]]:
     4      block
    
     6   try:
     7     block
     8   except [exception,[data...]]:
     9      block
    10   else:
    11      block

      该种异常处理语法的规则是:

      ·   执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。

      ·   如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。

      ·   如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。

      ·   如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。

      ·   如果没有发生异常,则执行else块代码。

      一个 try...except 块可以有一条 else 子句,就像 if 语句。如果在 try 块中没有异常引发,然后 else 子句被执行。

    4、采用traceback(跟踪)模块查看异常

          发生异常时,Python能“记住”引发的异常以及程序的当前状态。Python还维护着traceback(跟踪)对象,其中含有异常发生时与函数调用 堆栈有关的信息。记住,异常可能在一系列嵌套较深的函数调用中引发。程序调用每个函数时,Python会在“函数调用堆栈”的起始处插入函数名。一旦异常 被引发,Python会搜索一个相应的异常处理程序。如果当前函数中没有异常处理程序,当前函数会终止执行,Python会搜索当前函数的调用函数,并以 此类推,直到发现匹配的异常处理程序,或者Python抵达主程序为止。这一查找合适的异常处理程序的过程就称为“堆栈辗转开解”(Stack Unwinding)。解释器一方面维护着与放置堆栈中的函数有关的信息,另一方面也维护着与已从堆栈中“辗转开解”的函数有关的信息。 

    5、常用异常名称:

     1     异常名                    描述
     2   AttributeError        调用不存在的方法引发的异常
     3   EOFError               到文件末尾引发的异常
     4   ImportError            导入模块出错引发的异常
     5   IndexError             列表越界引发的异常
     6   IOError                I/O操作引发的异常,如打开文件出错等
     7   KeyError               使用字典中不存在的关键字引发的异常
     8   NameError              使用不存在的变量名引发的异常
     9   TabError               语句块缩进不正确引发的异常
    10   ValueError             搜索列表中不存在的值引发的异常
    11   ZeroDivisionError      除数为零引发的异常
  • 相关阅读:
    android studio eclipse keymap theme 快捷键 主题风格设置
    android Observable api请求参数设置注解问题
    量化交易-外汇交易-MetaTrader5
    springboot maven项目,为什么build成功,build path也没错误,project-->clean 也没用,项目上面还是有个红x呢?
    springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法
    深入剖析Kubernetes k8s
    android搜索框列表布局,流程及主要步骤思维导图
    php 当前时间 当前时间戳和数据库里取出的时间datetime格式进行比较大小
    android studio 自动导入包
    第三方统计分析埋点工具对比,神策、Ptmind、GrowingIO、国双,还有谷歌分析,谁更好?
  • 原文地址:https://www.cnblogs.com/Zhan-W/p/10747432.html
Copyright © 2020-2023  润新知