Python入门(一) 异常处理

异常处理

捕捉异常可以使用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

时间: 2024-11-09 01:50:30

Python入门(一) 异常处理的相关文章

Python入门到实战 Python的修炼之道

Python的修炼之道(入门语法.游戏开发.网络编程) 课程讲师:小强老师 课程分类:Python 适合人群:初级 课时数量:43课时 用到技术:Python 涉及项目:数据库应用程序开发 游戏开发 咨询QQ:1337192913 课程设计思路及目标: 本课程以实际问题为核心进行组织和编写,以框图为工具来描述问题的解决步骤,最终用Python语言写出程序,旨在培养学员从整体上思考问题和把握问题,并以一种直观的方式描述问题的解决步骤,训练学员用简洁而快速的方式编写程序.本课程以培养学生的编程思想和

Python入门(目录全览)

目录 Python入门(目录全览) 第一篇 markdown编辑器 第二篇 计算机基础 第三篇 Python解释器和集成环境 第三篇 Python基础 第四篇 Python进阶 第五篇 文件处理 第六篇 函数基础 第七篇 函数进阶 第八篇 模块基础 第九篇 Python常用模块 第十篇 面向对象基础 第十一篇 面向对象进阶 第十二篇 面向对象高阶 第十三篇 网络编程 第十四篇 并发编程 第十五篇 MySQL数据库 Python入门(目录全览) 第一篇 markdown编辑器 001markdow

Python入门

Python入门教程(个人日常学习记录,有不妥之处欢迎指正!后续更新,敬请期待...) 学习地址:http://www.imooc.com/learn/177 Python中数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种: 一.整数 Python可以处理任意大小的整数,当然包括

Python 入门基础学习

Python入门学习 我们使用python3.0版本 首选来入门  带你进入Hello World >>> print ("Hello World")Hello World 好了 我们会python了  呵呵了 我们来实现个简单的列子吧  文字游戏 print('------------我爱九月天---------------') temp = input("不妨猜一下九月天在你心里你会想的是哪个数字:") guess = int(temp) if

python入门学习课程推荐

最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化的学习. 现推荐几个学习python基础知识的途径: 1.<笨办法学python>(第三版),从头到尾一个字一个字的照着程序敲: 2.慕课网<python入门>课程: 3.网易云课堂<疯狂的python>公开课. 4.<廖雪峰Python3>pdf文件. 这也是

《Python入门》第一个Python Web程序——简单的Web服务器

上一篇讲了<Python入门>Windows 7下Python Web开发环境搭建笔记,接下来讲一下Python语言Web服务的具体实现:第一个Python Web程序--简单的Web服务器. 与其它Web后端语言不同,Python语言需要自己编写Web服务器. 如果你使用一些现有的框架的话,可以省略这一步: 如果你使用Python CGI编程的话,也可以省略这一步: 用Python建立最简单的web服务器 利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录

问道python之基础篇【二】python入门

问道python之基础篇[二] Python入门 1.python的工作过程 python解释器把源代码转换为字节码的中间形式,然后再把它翻译成机器使用的机器语言并运行. 2.pyc文件 2.1.什么是pyc文件 执行python代码时,如果导入了其他的.py文件,那么在执行过程中会自动生成一个与其同名的.pyc文件,该文件就是python解释器编译之后产生的字节码. ps:代码经过编译可以产生字节码:字节码通过反编译也可以得到代码. Pyc文件一般由3个部分组成: 最开始4个字节是一个Maig

Python入门之中文乱码

python入门编码: Python 文件中如果未指定编码,有中文代码时候,在执行过程会出现报错: File "test.py", line 2 SyntaxError: Non-ASCII character '\xe4' in file test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details Python中默认的编码格式是 ASCII

visual studio 2015 搭建python开发环境,python入门到精通[三]

在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo,这里略带一句,其实就"学习python"而言,比较建议使用pycharm,pycharm可以设置VS或者eclipse等多种IDE的编码,可以让绝大部分其他语言使用IDE的习惯者更容易上手.这一点兼容确实做的很好.不过既然这么多园友要求使用vs开发python的话,就介绍一下visual

Python入门篇之列表

一.声明 本教程所使用的是Python版本是3.4.2. 二.Python列表介绍 Python列表(List)使用简单而且功能强大,其具有很好的可伸缩性,为开发者编程提供了巨大的便利. [列表变量声明] 列表变量的声明和C语言中声明数组的方式差不多.下图中声明了一个名为 list 的列表变量. [列表元素的索引方式] 笔者在<Python入门篇之字符串使用>一文中介绍过字符串中字符的索引方式.列表元素的索引方式和字符串字符的索引方式是一样的,都是根据元素间隙位置来切割出元素内容.下面做详细说