异常处理

捕捉异常可以使用try/except语句。

try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

以下是语法:

1 try:
2 <语句>        #运行别的代码
3 except <名字>:
4 <语句>        #如果在try部份引发了'name'异常
5 except <名字>,<数据>:
6 <语句>        #如果引发了'name'异常,获得附加的数据
7 else:
8 <语句>        #如果没有异常发生

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

  • 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
  • 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
  • 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

使用except而不带任何异常类型

你可以不带任何异常类型使用except,如下实例:

1 try:
2     正常的操作
3    ......................
4 except:
5     发生异常,执行这块代码
6    ......................
7 else:
8     如果没有异常执行这块代码

以上方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。

使用except而带多种异常类型

你也可以使用相同的except语句来处理多个异常信息,如下所示:

1 try:
2     正常的操作
3    ......................
4 except(Exception1[, Exception2[,...ExceptionN]]]):
5    发生以上多个异常中的一个,执行这块代码
6    ......................
7 else:
8     如果没有异常执行这块代码

try-finally 语句

try-finally 语句无论是否发生异常都将执行最后的代码。

1 try:
2 <语句>
3 finally:
4 <语句>    #退出try时总会执行
5 raise

当在try块中抛出一个异常,立即执行finally块代码。

finally块中的所有语句执行后,异常被再次触发,并执行except块代码。

参数的内容不同于异常。

异常的参数

一个异常可以带上参数,可作为输出的异常信息参数。

你可以通过except语句来捕获异常的参数,如下所示:

1 try:
2     正常的操作
3    ......................
4 except ExceptionType, Argument:
5     你可以在这输出 Argument 的值...

变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。

元组通常包含错误字符串,错误数字,错误位置。

触发异常

我们可以使用raise语句自己触发异常

raise语法格式如下:

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。

例如我们捕获以上异常,"except"语句如下所示:

1 try:
2     正常逻辑
3 except Exception,err:
4     触发自定义异常
5 else:
6     其余代码

用户自定义异常

通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。

在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

1 class Networkerror(RuntimeError):
2     def __init__(self, arg):
3         self.args = arg

在你定义以上类后,你可以触发该异常,如下所示:

try:raise Networkerror("Bad hostname")
except Networkerror,e:print e.args

转载于:https://www.cnblogs.com/zcjcsl/p/9073667.html

Python入门(一) 异常处理相关推荐

  1. python入门——P34异常处理:你不可能总是对的2

    有时程序会出错,但不会崩溃,我们需要知道哪里出错了,并进行提醒. '''python3 try:检测范围 except Execption[reason]:出现异常后的处理代码 finally:无论如 ...

  2. Python入门学习之异常处理机制

    异常即是一个事件,该事件会在程序执行过程中发生影响程序的正常执行.python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.今天的Python入门学习课程就给大家讲解一下异常 ...

  3. python速成要多久2019-8-28_2019最全Python入门学习路线,不是我吹,绝对是最全

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  4. 编程语言python入门要电脑什么配置能带动-对于几乎是零基础的人,直接学 Python 编程合适吗?...

    在众多高大上的自学指导中,尝试做一股清流,把要讲清楚的都讲清楚,除了一堆资料之外,你能在学之前就有一个非常明显的结果倾向. 本文以<小白带你学Python>为内容方向,试图在繁杂的信息里, ...

  5. python基础教程教材-最好的Python入门教材是哪本?

    Python教程领到手,学习不用愁!领 作为一门编程语言,Python是属于入门比较简单的.所以身边不少人都选择了自学Python,而且网上相关资料也有很多,知识兔分享大量的Python教学课程,基本 ...

  6. 学python最好的方式-最好的Python入门教程是?

    Python教程领到手,学习不用愁!领! 作为一门编程语言,Python是属于入门比较简单的.所以身边不少人都选择了自学Python,而且网上相关资料也有很多,知识兔分享大量的Python教学课程,基 ...

  7. python编程在哪里写-python入门该从哪里开始?

    相信对于每个人而言,知道编程和学习编程这件事,出发点是不同的.汤哥在北京接触编程的时间是2013年,那个时候还在一个二线城市上大学,还没有这么多各种融资,各种互联网创业的氛围,大家想的更多的是一些线下 ...

  8. 自学python推荐书籍2019-2019最全Python入门学习路线,不是我吹,绝对是最全

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  9. python入门买什么书-大学生Python入门什么书好?

    大学生python入门所看书籍推荐: 1.<python基础教程>(第2.3版) 这本书是经典的python入门教程,层次鲜明.结构严谨.内容详实,特别是后面几章,作者将前面讲述的内容应用 ...

  10. 自学python入门-学python入门看什么书

    python语言是最近几年流畅起来的编程语言,因其应用范围广,支持跨平台操作,使得python越来越受欢迎,学习python的人也越来越多.python学习网,大量的免费python视频教程,欢迎在线 ...

最新文章

  1. 皮一皮:当你在上海地铁里被夹住后...
  2. css中单位em和rem
  3. python发明者叫什么-Guido发明的python语言是哪一年正式发布的?
  4. Java纸牌拖拉机简单模拟
  5. 高通平台device tree生成platform device的过程(MSM8909)
  6. 将背景色添加到Word 2007文档中
  7. 深入理解 Java 内存模型(一)——基础
  8. 会议指南二维码生成_包装和准备技术会议的指南
  9. php core模块,module.php
  10. Ubuntu提示软件更新
  11. Flutter实战一Flutter聊天应用(一)
  12. 多数据源与动态数据源的权衡
  13. 哪些模块可用于python性能分析_python性能分析之cProfile模块
  14. HTML调用QQ临时会话
  15. bscroll制作轮播图,jq和vue两种方式,带下边的点点
  16. div垂直居中的N种方法以及多行文本垂直居中的方法
  17. Failed to build sentencepiece
  18. python练习五——PTA
  19. 日志保存SD卡并上传服务器的工具类
  20. 计算机房验收标准,机房标准工程验收标准和方法.doc

热门文章

  1. mysql 插入毫秒数据_【转载】怎样在mybatis里向mysql中插入毫秒数的时间?
  2. 收藏 | 超轻量目标检测模型NanoDet,比YOLO跑得快,上线两天Star量超200
  3. 谷歌推出量子机器学习框架TFQ-TensorFlow Quantum,一个可训练量子模型的机器学习框架...
  4. php com(),php|luosimao.com文档中心
  5. numpy.random随机数模块常用函数总结
  6. linux 下qt 终端隐藏在后台_20 个 Linux 终端下的生产力工具 | Linux 中国
  7. android java 指针异常处理,Android自定义抛出异常的方法详解
  8. python 可视化项目_python3项目之数据可视化
  9. 通信接口主要的5种类型_5种常见的住宅建筑结构类型,你真的了解吗?
  10. android 服务是什么问题,Android Studio 中的Service问题