1. python-异常处理

  • 什么是异常?

    顾名思义,异常就是程序因为某种原因无法正常工作了,比如缩进错误、缺少软件包、环境错误、连接超时等都会引发异常。

    一个健壮的程序应该把所能预知的异常都应做相应的处理,保障程序长期运行。

  • 捕获异常语法

    • 语法格式

      try:
      	<代码块>
      except [异常类型]:
      	<发生异常时执行的代码块>
      
    • 注释:

      ​ 如果在执行try 块里的业务逻辑代码时出现异常,系统会自动生成一个异常对象,该异常对象被提交给Python 解释器,这个过程被称为引发异常。

      ​ 当Python 解释器收到异常对象时,会寻找能处理该异常对象的except 块,如果找到合适的except 块,则把该异常对象交给该except 块处理,这个过程被称为捕获异常。如果Python 解释器找不到捕获异常的except 块,则运行时环境终止,Python 解释器也将退出。

  • 常见异常类型

    异常类型 用途
    SyntaxError 语法错误
    IndentationError 缩进错误
    TypeError 对象类型与要求不符合
    ImportError 模块或包导入错误;一般路径或名称错误
    KeyError 字典里面不存在的键
    NameError 变量不存在
    IndexError 下标超出序列范围
    IOError 输入/输出异常;一般是无法打开文件
    AttributeError 对象里没有属性
    KeyboardInterrupt 键盘接受到Ctrl+C
    Exception 通用的异常类型;一般会捕捉所有异常
    UnicodeEncodeError 编码错误
  • 异常处理

    • 示例1:打印一个没有定义的变量

      try:
      	print(name)
      except NameError:
      	print("发生名称错误时,执行的代码")
      
    • 示例2:当不确定异常类型时,可以使用通用异常类型

      try:
      	print(name)
      except Exception:
      	print("发生名称错误时,执行的代码")
      
    • 示例3:保存异常信息

      try:
      	print(name)
      except Exception as e:
      	print("错误:%s" %e)
      	print("发生名称错误时,执行的代码")
      

2. 案例

  • 示例1、打印一个没有定义的变量
  try:
      print(n)
  except NameError:
      print("发生名称错误时,执行的代码")
  • 案例2、打印一个当不确定异常类型时,可以使用通用异常类型

    try:
        print(name)
    except Exception:
        print("发生名称错误时,执行的代码")
    
  • 案例3、保存异常信息

    try:
        print(name)
    except Exception as e:
        print("错误:%s" %e)
        print("发生名称错误时,执行的代码")