第六篇:python异常捕获

标签: python 异常捕获
3人阅读 评论(0) 收藏 举报
分类:

什么是异常

异常是一个事件,这在程序的执行过程中扰乱程序的指令的正常流程。一般来说,当一个 Python 脚本遇到一种情况,它无法应付则会引发一个异常。异常它是一个 Python 对象,它表示一个错误。
当 Python 脚本会引发一个异常,它必须要么处理异常,要么终止并退出。

#!/usr/bin/env python3
# -*-coding:UTF-8-*-
data = []
print(data[1])

运行结果:
这里写图片描述

异常的种类

常见类型

AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x

IOError 输入/输出异常;基本上是无法打开文件

ImportError 无法引入模块或包;基本上是路径问题或名称错误

IndentationError 语法错误(的子类) ;代码没有正确对齐

IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

KeyError 试图访问字典里不存在的键

KeyboardInterrupt Ctrl+C被按下

NameError 尝试访问一个没有申明的变量

SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)

TypeError 传入对象类型与要求的不符合

UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它

ValueError 传入一个调用者不期望的值,即使值的类型是正确的

如何捕获异常

一种异常的捕获

#!/usr/bin/env python3
# -*-coding:UTF-8-*-
try:
    data = []
    print(data[1])
except IndexError as e:
    print('Error:',e)

运行结果:
这里写图片描述

多种异常的捕获

多种异常的捕获可以用以下这两张写法:
第一种:

#!/usr/bin/env python3
# -*-coding:UTF-8-*-

try:
    data = []
    print(data[1])
# 考虑到有什么异常就添加什么异常类
# 最后不知道用什么异常类,可以用Exception
except IndexError as e:
    print('Error:',e)
except IOError as e:
    print('Error:', e)
except AttributeError as e:
    print('Error:', e)

第二种:

try:
    # data = []
    # print(data[1])
    with open('test.txt','r') as f:
        f.write()
except (IndexError,IOError) as e:
    print('Error:',e)

运行结果:
这里写图片描述

含finally、else的异常捕获

finally:不过程序是否出现异常都会执行
else:用于考虑程序没有异常时该执行的
程序没异常时,finally、else的执行效果:

try:
    data = ['hey','world']
    print(data[1])
except (IndexError,IOError) as e:
    print('Error:',e)
else:
    print("程序没有异常")
finally:
    print('没异常时,finally执行了')

运行结果:
这里写图片描述
程序有异常时,finally、else的执行效果:

try:
    data = []
    print(data[1])
except (IndexError,IOError) as e:
    print('Error:',e)
else:
    print("程序没有异常")
finally:
    print('有异常时,finally也执行了')

运行结果:
这里写图片描述

自定义异常类

当然,如果异常类没有我们要的,我们还可以自定义异常类:

class myException(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg
try:
    raise myException('类型错误')
except myException as e:
    print(e)

以上便是python3异常捕获的基本内容了。

查看评论

WebApi的开发(进阶版)

-
  • 1970年01月01日 08:00

python异常捕获

    python的异常处理如C/C++的结构一样。python用try...except...,C/C++则用try...catch..,并不难理解。在对具体错误的获取则有点不同,主要是语法的差...
  • moxien
  • moxien
  • 2008-06-04 23:26:00
  • 6083

PyCon 2011 - Hidden Treasures of the Python Standard Library - 全局异常捕获

PyCon 2011 - Hidden Treasures of the Python Standard Library - 全局异常捕获
  • liuyuan_jq
  • liuyuan_jq
  • 2011-03-30 09:43:00
  • 885

Android学习第六篇——布局动画

上一篇我们学习了四种基本的动画以及混合动画,这一篇我将要学习一下布局动画,这种动画会影响到布局的所有子对象。 一、LinearLayoutAnimation 这是一种简单的布局动画,我们可以先在界...
  • F_Felix
  • F_Felix
  • 2016-04-08 14:49:26
  • 274

负载均衡原理与实践详解 第六篇 健康检查机制详解(上)

1 基本的健康检查       负载均衡器可以提供多种健康检查方式,能够在OSI不同层面进行基本的健康检查:     二层的健康检查就是发送一个ARP请求查找给定IP地址的MAC地址...
  • yiyuwu7069
  • yiyuwu7069
  • 2017-10-12 18:04:38
  • 85

第六篇:数据库开始篇

严重警告:对前面的问题还没弄清楚的,请不要再往下看了 开场白:本来是应该从哪里ctrl+v一段关于JDBC的东东给你看看的,是想到它实在有点过于理论和教条,所以就不太过于罗嗦了,但还是讲一点两点,要不...
  • arielxp
  • arielxp
  • 2004-06-24 07:04:00
  • 1777

uboot异常向量表---嵌入式回归第六篇

异常向量表: 1. 异常向量表定义:因为内部或者外部的一些事件,导致处理器停下正在处理的工作,转而去处理这些发生的事件 2. 异常类型:七种异常(这个前面有提到过) 3. 异常入口: ...
  • coding__madman
  • coding__madman
  • 2016-04-24 00:37:31
  • 816

Python 装饰器捕捉异常

背景需要频繁使用python 对mssql 进程insert into 语句,在此过程中有很多的错误产生(如字段长度不够,一些奇怪字符等),调试起来很不方便,因此写了个装饰器,进行异常捕捉,并将产生错...
  • long_20140901
  • long_20140901
  • 2017-08-25 17:45:50
  • 228

Python异常捕获与处理

转载自: JmilkFan:http://blog.csdn.net/jmilk 异常 异常即非正常状态,在Python中使用异常对象来表示异常。若程序在编译或运行过程中发生错误,...
  • zong596568821xp
  • zong596568821xp
  • 2017-10-09 10:43:20
  • 4664

python中异常捕获示例

#!~/python2.5.2/bin/pythontry:    fp=open("./ps.txt", "r");except IOError, e:    print "Failed...
  • mvpme82
  • mvpme82
  • 2010-06-16 21:08:00
  • 946
    个人资料
    等级:
    访问量: 669
    积分: 105
    排名: 125万+
    文章存档
    最新评论