前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python -- 异常处理

Python -- 异常处理

作者头像
py3study
发布于 2020-01-13 02:11:14
发布于 2020-01-13 02:11:14
90400
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

【简 介 异 常】  异 常 是 什 么 

异常是一个事件,该事件在执行过程中发生,影响了程序正常执行。异常是python对象,表示一个错误。而我们要做的事发生异常后捕获并处理它,否则程序会终止。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try: 
<语句>        #运行别的代码 
except <name><语句>        #如果在try部份引发了'name'异常 
except <name><数据>: 
<语句>        #如果引发了'name'异常,获得附加的数据 
else: 
<语句>        #如果没有异常发生

工 作 原 理 

当try开始后,python在当前程序的上下文做标记,当异常出现时就回到这里,try子句先执行,接下来发生的事依赖于出现什么异常。

1、try 子语句执行后发生异常,python去逐个匹配except子句,匹配并处理完毕,控制流就通过了整个try语句(除非期间又发生了新的异常)

2、try 子语句发生异常后,没有匹配到except子句,异常呗递交到上层try,或者程序最上层,然后结束程序,打印缺省值

3、try 子语句没有发生异常,python将执行else语句后的语句,然后通过整个try语句

【五 类 异 常 】

使用except带有IOError异常 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
# -*- coding: UTF-8 -*-
try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print "Error: 没有找到文件或读取文件失败"
else:
    print "内容写入文件成功"
    fh.close()

>>>> python test.py   //输出如下

内容写入文件成功

cat testfile       # 查看写入的内容

这是一个测试文件,用于测试异常!!

chmod  -w  testfile

>>>> python test.py   //输出如下

Error: 没有找到文件或读取文件失败

使用except不带任何异常 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try:
    正常的操作
   ......................
except:
    发生异常,执行这块代码
   ......................
else:
    如果没有异常执行这块代码

以上方式,不论发生什么异常,都会执行except子语句;这不是好方式,我们不能识别其具体异常。

使用except带多种异常类型 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try:
    正常的操作
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]): 
   发生以上多个异常中的一个,执行这块代码
   ......................
else:
    如果没有异常执行这块代码

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try:
    <语句>
finally:
    <语句>  #退出try时总会执行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
# -*- coding: UTF-8 -*-
try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
finally:
    print "Error: 没有找到文件或读取文件失败"

>>>> python test.py   //输出如下,提前将testfile设为不可写

Error: 没有找到文件或读取文件失败

cat  testfile

这是一个测试文件,用于测试异常!!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try:
    fh = open("testfile", "w")
    try:
        fh.write("这是一个测试文件,用于测试异常!!")
    finally:
        print "关闭文件"
        fh.close()
except IOError:
    print "Error: 没有找到文件或读取文件失败"

>>>> python test.py   //输出如下,提前将testfile设为不可写 关闭文件 cat  testfile 这是一个测试文件,用于测试异常!!

Argument 异 常  一个异常可以带上参数,可作为输出的异常信息参数。 你可以通过except语句来捕获异常的参数,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try:
    正常的操作
   ......................
except ExceptionType, Argument:
    你可以在这输出 Argument 的值...

变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。 元组通常包含错误字符串,错误数字,错误位置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 定义函数
def temp_convert(var):
    try:
        return int(var)
    except ValueError, Argument:
        print "参数没有包含数字\n", Argument
# 调用函数
temp_convert("xyz");

>>>> python test.py   //输出如下 参数没有包含数字 invalid literal for int() with base 10: 'xyz'

raise 触 发 异 常 

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

Exception是异常的类型(例如:NameError)

args是一个异常参数值,不提供默认为None

traceback参数可选(很少用),追踪异常对象#!/usr/bin/python

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: UTF-8 -*-
# 定义函数
def mye( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行
try:
    mye(0)    // 触发异常
except "Invalid level!":  //为了能捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串
    print 1
else:
    print 2

>>>> python test.py   //输出如下

Traceback (most recent call last):   File "test.py", line 11, in <module>     mye(0)   File "test.py", line 7, in mye     raise Exception("Invalid level!", level) Exception: ('Invalid level!', 0)

 自 定 义 异 常 

创建一个新异类,程序命名他们自己的异常,异常应是典型的集成Exception类;

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class networkerror(RuntimeError):
def __init__(self,arg):
self.args = arg
try:
raise networkerror("bad hostname")
except networkerror,e:
print e.args
print 111

>>>> python test.py   //输出如下

('b', 'a', 'd', ' ', 'h', 'o', 's', 't', 'n', 'a', 'm', 'e')

111

----------------------------------------------------------------------------------------------

异常名称

描述

BaseException

所有异常的基类

SystemExit

解释器请求退出

KeyboardInterrupt

用户中断执行(通常是输入^C)

Exception

常规错误的基类

StopIteration

迭代器没有更多的值

GeneratorExit

生成器(generator)发生异常来通知退出

StandardError

所有的内建标准异常的基类

ArithmeticError

所有数值计算错误的基类

FloatingPointError

浮点计算错误

OverflowError

数值运算超出最大限制

ZeroDivisionError

除(或取模)零 (所有数据类型)

AssertionError

断言语句失败

AttributeError

对象没有这个属性

EOFError

没有内建输入,到达EOF 标记

EnvironmentError

操作系统错误的基类

IOError

输入/输出操作失败

OSError

操作系统错误

WindowsError

系统调用失败

ImportError

导入模块/对象失败

LookupError

无效数据查询的基类

IndexError

序列中没有此索引(index)

KeyError

映射中没有这个键

MemoryError

内存溢出错误(对于Python 解释器不是致命的)

NameError

未声明/初始化对象 (没有属性)

UnboundLocalError

访问未初始化的本地变量

ReferenceError

弱引用(Weak reference)试图访问已经垃圾回收了的对象

RuntimeError

一般的运行时错误

NotImplementedError

尚未实现的方法

SyntaxError

Python 语法错误

IndentationError

缩进错误

TabError

Tab 和空格混用

SystemError

一般的解释器系统错误

TypeError

对类型无效的操作

ValueError

传入无效的参数

UnicodeError

Unicode 相关的错误

UnicodeDecodeError

Unicode 解码时的错误

UnicodeEncodeError

Unicode 编码时错误

UnicodeTranslateError

Unicode 转换时错误

Warning

警告的基类

DeprecationWarning

关于被弃用的特征的警告

FutureWarning

关于构造将来语义会有改变的警告

OverflowWarning

旧的关于自动提升为长整型(long)的警告

PendingDeprecationWarning

关于特性将会被废弃的警告

RuntimeWarning

可疑的运行时行为(runtime behavior)的警告

SyntaxWarning

可疑的语法的警告

UserWarning

用户代码生成的警告

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 异常处理
python标准异常 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError 所有数值计算错误的基类 FloatingPointError 浮点计算错误 O
张树臣
2018/05/15
1.1K0
【Python】【天池龙珠计划笔记】Python中的异常处理
异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。
Regan Yue
2021/09/16
8790
【Python】【天池龙珠计划笔记】Python中的异常处理
【Python3之异常处理】 转
程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)
双面人
2019/04/10
1.3K0
【Python3之异常处理】
                                                                            转
python学习笔记(8)python 异常处理
把有可能发生错误的语句放在try模块里,用except来处理异常。except可以处理专门的异常,也可以处理一组异常(使用圆括号),也可以处理所有异常,默认情况下处理所有异常,每个try,至少有一个except。
大数据小禅
2021/08/16
5420
python学习笔记(8)python 异常处理
Python异常
  异常是一个事件,该事件会在程序执行过程中发生,将影响程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
py3study
2020/01/09
8950
Python 异常处理大全
python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。
Python知识大全
2020/02/13
4910
Python 异常处理机制
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 异常处理机制 ---- Python 异常处理机制 1.try-except 语句 2.异常类型 3.raise 抛出异常 4.自定义异常 ---- 1.try-except 语句 Python解释器在运行出现异常时,会返回异常信息,告诉我们错误出现在哪一行,错误类型是什么,具体原因是什么。
小嗷犬
2022/11/15
6330
零基础学Python(第二十章 异常处理try)
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
红目香薰
2022/11/28
3510
Python 异常处理总结
什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。 异常处理: 本站Python教程会具体介绍。 断言(Assertions):本站Python教程会具体介绍。 Python标准
CDA数据分析师
2018/02/05
1.1K0
Python 异常处理总结
【python】异常详解
低级错误:代码错误 中级错误:边界值没考虑,传入数据没考虑类型 高级错误:程序运行过程中的不确定性环境因素
20岁爱吃必胜客
2023/03/06
2260
【python】异常详解
Python中的用户定义异常与NZEC错误
当代码出错时,Python会引发错误和异常,这可能导致程序突然停止。Python还通过try-except提供了异常处理方法。一些最常见的标准异常包括IndexError,ImportError,IOError,ZeroDivisionError,TypeError和FileNotFoundError。用户可以使用异常类创建自己的错误。
用户7466307
2020/07/09
1.6K0
关于Python异常处理,你需要了解的知识点
当Python检测到一个错误时,解释器就无法继续执行了,并且给出一个错误提示。比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然中断。这时候,就需要捕获处理它,否则程序会终止执行。
吾非同
2020/10/26
1.4K0
关于Python异常处理,你需要了解的知识点
【Python 入门第十八讲】Try Except的应用
错误是程序中的问题,程序将因此停止执行。另一方面,当发生一些内部事件时,会引发异常,从而改变程序的正常流程。
不惑
2024/02/22
4070
【Python 入门第十八讲】Try Except的应用
python基础学习15----异常处理
异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。
py3study
2020/01/19
1.7K0
Python 异常处理
Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。
想偷懒的程序员
2019/10/31
5330
【十五】python之异常处理
在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!!
菲宇
2019/06/13
1.2K0
【十五】python之异常处理
小朋友学Python(19):异常
一、什么是异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。 一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 二、异常处理 捕捉异常可以使用try…except语句。 try…except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。 如果你不想在异常发生时结束你的程序,只需在try里捕获它。 语法: 以下为简单的try….ex
海天一树
2018/04/17
5920
这份Python标准异常表 你应该了解!
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。
诸葛青云
2018/09/14
2830
这份Python标准异常表 你应该了解!
异常
  在python2中,要读的文件不存在时,会报IOError异常;而在python3中,如果要读的文件不存在,则会报FileNotFoundError异常。
py3study
2020/01/20
1.1K0
什么是异常
python异常捕获,在刚开始学的时候,经常会遇到两种报错信息:语法错误和执行的异常。
钢铁知识库
2022/08/20
1.1K0
相关推荐
Python 异常处理
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文