什么是异常处理

python内置了一套try···except···finally的错误处理机制

当程序出错的时候进行捕捉,然后根据捕捉到的错误信息进行响相应的处理

常用的内建异常

初识异常处理

如例

让用户进行输入,提示用户输入一个数字,如果用户输入的是数字就转换成int类型,然后打印用户输出的数字,如果用户输入的不是数字,就会转换出错,如果出错就提示用户输入的类型错误

  1. try:
  2. n = int(input("请输入一个数字>>>"))
  3. print('你输入的是数字',n)
  4. except Exception as e:
  5. print('输入类型错误,你应该输入数字')
  6. finally:
  7. print('------end------')

测试

  1. 正确:
  2. 请输入一个数字>>>12
  3. 你输入的是数字 12
  4. ------end------
  5.  
  6. 错误:
  7. 请输入一个数字>>>aaaaa
  8. 输入类型错误,你应该输入数字
  9. ------end------

分析:

当我们认为某些代码可能会出错时,就可以用try来运行这段代码

如果执行出错,则后续代码不会执行,而是直接跳转至错误处理代码,即except语句块

执行完except后,如果有finally语句块,则执行finally语句块,至此执行完毕

对不同的异常进行不同的处理

  1. try:
  2. n = int(input("请输出一个数字>>> "))
  3. except ValueError as e:
  4. print("ValueError错误")
  5. except Exception as e:
  6. print("出现异常")

执行测试

  1. 请输出一个数字>>> 123
  2. ansheng@Darker:~$ python3 /home/ansheng/文档/Python_code/sublime/Week06/Day04/s2.py
  3. 请输出一个数字>>> asd
  4. ValueError错误

在处理异常时,如果出现错误,那么会首先匹配ValueError,然后再匹配Exception

捕捉多个错误

  1. try:
  2. raise IndexError('出错了')
  3. except (IndexError, NameError) as e: # 捕获括号内的错误,并把错误信息赋值给e(一个except可以处理多个异常,这些异常将被放在一个括号里成为一个元组)
  4. print(e)

错误异常的基本结构

  1. try:
  2. # 主代码块
  3. pass
  4. except KeyError as e:
  5. # 异常时,执行该块
  6. pass
  7. else:
  8. # 主代码块执行完,执行该块
  9. pass
  10. finally:
  11. # 无论异常与否,最终执行该块,这块可有可无
  12. pass

执行流程

  • 如果出现错误,那么就执行except代码块,然后再执行finnly代码块
  • 如果没有出现错误,那么就执行else代码块,然后再执行finnly代码块
  • 无论有没有异常都执行finnly代码块

主动抛异常

  1. try:
  2. # raise表示主动出发异常,然后创建一个Exception对象,Exception括号内的值就是Exception对象的值
  3. raise Exception("主动出发的异常")
  4. except Exception as e:
  5. # 输出Exception对象的值
  6. print(e)

执行测试

  1. 主动出发的异常

Python学习系列之异常处理的更多相关文章

  1. Python学习系列(九)(IO与异常处理)

    Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Pytho ...

  2. Python学习系列(八)( 面向对象基础)

     Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类 ...

  3. Python学习系列(七)( 数据库编程)

    Python学习系列(七)( 数据库编程)        Python学习系列(六)(模块) 一,MySQL-Python插件       Python里操作MySQL数据库,需要Python下安装访 ...

  4. Python学习系列(六)(模块)

    Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...

  5. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  6. Python学习系列(四)(列表及其函数)

    Python学习系列(四)(列表及其函数) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) Python学习系列(三)(字符串) 一.基本概念 1,列表是什么?     ...

  7. Python学习系列(三)(字符串)

    Python学习系列(三)(字符串) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) 一个月没有更新博客了,最近工作上有点小忙,实在是没有坚持住,丢久又有感觉写的必要了 ...

  8. Python学习系列(二)(基础知识)

    Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比, ...

  9. Python学习系列:目录

    Python学习系列(二)Python 编译原理简介 Python学习系列(三)Python 入门语法规则1 Python学习系列(四)Python 入门语法规则2

随机推荐

  1. ASP.NET Excel下载方法一览

    方法一 通过GridView(简评:方法比较简单,但是只适合生成格式简单的Excel,且无法保留VBA代码),页面无刷新 aspx.cs部分 using System; using System.Co ...

  2. 5.4QBXT 模拟赛 (Rank1 机械键盘 蛤蛤)

    NOIP2016提高组模拟赛 ——By wangyurzee7 中文题目名称 纸牌 杯具 辣鸡 英文题目与子目录名 cards cups spicychicken 可执行文件名 cards cups ...

  3. 利用nginx与nginx-rtmp-module搭建流媒体服务器实现直播

    使用环境是centos 7.0+nginx:可以实现简单的流媒体服务. 先下载nginx-rtmp-module拓展: nginx-rtmp-module的官方github地址:https://git ...

  4. 如何优雅地从CSDN转载文章

    复制粘贴应该是最显而易见的方法,但是不仅会有丢失内容,而且格式也会丢失.要想达到更好的效果,可以从html源码入手. 1.在chrome浏览器中打开要转载的文章,右键选择检查 2.在chrome的右方 ...

  5. xamarin.forms 绑定页面里指定元素的某个属性值

    {Binding Source={x:Reference elementName}, Path=BindingContext.propertyname, Mode=OneWay} elementNam ...

  6. Axure 9 面板折叠显示隐藏

    1  首先放置一个面板1作为点击事件: 2  另外一个面板2或者其他组建,将其设置为动态面板,然后隐藏 3  给面板1添加如下事件,即可: 4  我们点击面板1,可以实现展开隐藏面板2的动态效果

  7. CAD参数绘制实心圆弧填充(com接口)

    C#中实现代码说明: private void DrawPathToHatch1() { //把路径的开始位置移动指定的点 //参数一为点的X坐标 ,参数二为点的Y坐标,参数三为该点处开始宽度,对Po ...

  8. hdfs深入:03、hdfs的架构以及副本机制和block块存储

    HDFS分布式文件系统设计目标 1.            硬件错误  由于集群很多时候由数量众多的廉价机组成,使得硬件错误成为常态 2.            数据流访问  所有应用以流的方式访问数 ...

  9. js如何判断数组是Array类型

    在说明如何判断一个对象为数组类型前,我们先巩固下js的数据类型,js一共有六大数据类型:number.string.object.Boolean.null.undefined.var str=&quo ...

  10. sqlserver常用简单语句

    1.增 插入内容 insert into <表名> (列1,列2,列3) values ('值1','值2','值3') 检索出的内容插入到另外一张表 insert into <表名 ...