python 学习笔记十六 异常处理

异常

  • 程序运行过程中,不可避免的会出现一些错误,如变量未赋值就使用,索引越界等
  • 程序运行过程中,一旦出现异常,程序将会立即停止,异常以后的代码不会执行
    在这里插入图片描述

处理异常

  • python希望在出现异常时,我们可以编写代码来对异常进行处理
try语句

  try:
    代码块(可能出现错误的语句)
  except:
    代码块(出现错误后的处理方式)
  else:
    代码块(没出错时要执行的语句)
  finally:
    代码块(该代码块始终都执行)

try语句必须有,else语句可有无,
try中语句出错时,会执行except语句中的代码
在这里插入图片描述
try语句没有错误时,else中的代码会执行
在这里插入图片描述

异常的传播

  • 当函数中出现异常时,如果在函数中对异常进行处理,则异常不会在传播;如果函数中没有处理,则传递到调用处;

从函数里异常处传递到调用处
在这里插入图片描述

  • 如果函数调用处处理了异常则不传播,如果没处理则继续传播,直至传递到全局作用域时还没有处理,则程序终止,并显示异常。

异常对象

  • 如果except后不跟任何内容,则此时它会捕获所有异常,如果在except后跟着一个异常类型,则只捕获该类型的异常;如果在except后面跟一个exception则和不跟任何内容一样;

  try:
    代码块(可能出现错误的语句)
  except 异常:
    代码块(出现错误后的处理方式)
  else:
    代码块(没出错时要执行的语句)

输出一个未定义的变量会引起NameError异常
在这里插入图片描述
在except后指定NameError,则except只捕获NameError异常
在这里插入图片描述
捕获多个异常时可以写多个except语句,但这种方式程序只会捕捉第一个异常不会管后面的;

查看异常对象

except exception as e:
  print(‘未知异常’,e,type(e))
在这里插入图片描述

finally
  • finally 子句不管怎么样,都会执行
    finally:
      代码块

出现异常时,finally语句执行
在这里插入图片描述
不出现异常时,finally语句执行
在这里插入图片描述

抛出异常

  • raise可以用于向外部抛出异常,后面可以跟一个异常类或异常类的实例
  • 抛出异常的目的是告诉调用者这里调用时出现问题,希望它自己处理
    在这里插入图片描述
  • 自定义异常类,创建一个类继承Exception即可
    在这里插入图片描述
发布了85 篇原创文章 · 获赞 158 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Late_whale/article/details/104209129
今日推荐