返回顶部
首页 > 资讯 > 后端开发 > Python >Python中的异常类型及处理方式示例详解
  • 934
分享到

Python中的异常类型及处理方式示例详解

2024-04-02 19:04:59 934人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言正文一、什么是异常二、异常的类型三、异常处理四、try 介绍五、finally 介绍六、raise 介绍结尾前言 python 是一种面向对象的、解释型的、通用的、开源的脚本

前言

python 是一种面向对象的、解释型的、通用的、开源的脚本编程语言。现在市面上 Python 非常的流行,主要是因为它简单易用,学习成本低,比如要实现某个功能,Python 可能只需要几行代码,而用C语言可能需要上百行代码,因为C语言什么都要得从头开始编码,而 Python 已经内置了很多功能模块,所以,我们只需要导入特定的包,就可以实现想要的效果。

正文

今天,我们主要来了解一下 Python 中的异常类型以及它们的处理方式。说到异常处理,我们首先要知道什么是异常。其实,异常就是一类事件,当它们发生时,会影响到程序的正常执行。

一、什么是异常

其实,异常就是一类事件,当此类事件在程序执行过程中发生时,就会影响程序的正常执行。一般情况下,在 Python 无法正常处理程序时就会发生一个异常,而异常是 Python 的一种对象类型,用来表示一个错误。当 Python 脚本发生异常时我们需要捕获并处理它,否则程序就会终止。

二、异常的类型

Python 中定义了一些标准的异常类型,具体的异常名称和对应的实际意义,我们可以通过下面的表格来了解。

异常名称 描述
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 用户代码生成的警告

其实,在上述表格中列出的异常中,也具备一定的层次关系,我们可以通过下图来了解一下。

三、异常处理

在实际开发过程中,我们需要写出健壮性的程序,不希望我们的程序在执行过程中遇到了异常就自动终止。因此,我们需要处理程序执行过程中的异常事件,从而保证程序不会因为发生异常而终止。在编码过程中,我们可以简单使用 try/except 语句来捕捉异常,具体语法如下:


try:
<语句>        # 运行别的代码
except 异常类型:
<语句>        # 如果在try部份引发了异常
else:
<语句>        # 如果没有异常发生

熟悉 Java 的小伙伴都知道,在 Java 中是通过 try...catch 语句来捕获代码中的异常事件的,在 Python 中使用什么呢?

其实,在 Python 中是使用 try...except 语句用来捕获异常,通过监视 try 语句块中的错误,从而让 except 语句捕获异常信息并进行处理。

因此,如果你不想在异常发生时结束你的程序,就需要在 try 语句块中捕获相应的异常。

接下来,我们通过一个代码实例来具体了解一下 try...except 的用法。

代码实例:


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
try:
    fh = open("test.txt", "r")
    fh.write("这是一个测试文件,用于测试Python中的异常!")
except IOError:
    print "Error: 写入文件失败"
else:
    print "内容写入文件成功"
    fh.close()

上述代码的意思是以可读模式打开一个 test.txt 文件,然后向文件中写入一段话:这是一个测试文件,用于测试Python中的异常! 因为文件是以可读模式打开的,所以没有写入权限,肯定会出错,但是因为是在 try 代码块中,肯定会被对应的IO错误类型捕获,并输入提示信息:Error:写入文件失败。

运行结果:

然后,我们修改代码,以写模式打开文件再写入对应的语句,修改后代码如下:


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
try:
    fh = open("test.txt", "w")
    fh.write("这是一个测试文件,用于测试Python中的异常!")
except IOError:
    print "Error: 写入文件失败"
else:
    print "内容写入文件成功"
    fh.close()

这时,我们发现文件能够正常写入内容了,并且不会触发异常事件发生。

运行结果:

四、try 介绍

try 的工作原理是,当开始一个 try 语句后,python 就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try 子句先执行,接下来会发生什么依赖于执行时是否出现异常。大致的情况可以分为两种,一种是触发了异常,另一种是没有触发异常,具体表现如下:

1. 如果当 try 后的代码里发生了异常,python 就跳回到 try 并执行第一个匹配该异常的 except 子句,异常处理完毕,控制流就通过整个 try 语句。

2. 如果在 try 后的代码里没有发生异常,python将执行else语句后的语句,然后控制流通过整个try语句。

其实,上面的代码实例很好的覆盖了这两种情况。

五、finally 介绍

finally 语句块中的内容,无论程序是否发生了异常都执行。这一点和 Java 是类似的,具体我们来看一段代码:


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
try:
    fh = open("test.txt", "r")
    fh.write("这是一个测试文件,用于测试Python中的异常!")
except IOError:
    print "Error: 写入文件失败"
else:
    print "内容写入文件成功"
    fh.close()
finally:
    print "异常发生了,执行finally代码块"

上述代码在原来的基础上增加了 finally 代码块,发生了异常,依然会执行 finally 代码块。同样,即使没有触发异常,也会执行相应的 finally 代码块。感兴趣的小伙伴可以自己动手试一下,这里就不演示了。

运行结果:

六、raise 介绍

在 Java 中,我们可以使用 throw 语句主动抛出异常,那么在 Python 中,是否也有类似的关键字呢?答案是肯定的。接下来,我们就来了解一下 raise 关键字。在编码过程中,我们可以使用 raise 语句主动触发异常。具体的语法可以参考如下格式:


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

需要注意的是语句中 Exception 是异常的类型(例如,IOError、OSError),参数标准异常中任意一种,参数 args 是自已提供的异常参数。最后一个参数 trackback 是可选的,一般为空。

实例代码:


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
try:
    fh = open("test.txt", "w")
    fh.write("这是一个测试文件,用于测试Python中的异常!")
except IOError:
    print "Error: 写入文件失败"
else:
    print "内容写入文件成功"
    try:
	print "抛出自定义异常"
    	raise Exception("这是一个自定义异常事件")
    except:
	print "自定义异常事件被捕获"
    fh.close()
 
finally:
    print "自定义异常发生了,执行finally代码块"

运行结果:

结尾

好了,今天关于 Python 的介绍就到这里吧,本文主要分享了 Python 中的异常类型以及异常发生时的处理方法,Python 简单易用,感兴趣的小伙可以自己试试呦!

到此这篇关于Python中的异常类型及处理方式的文章就介绍到这了,更多相关Python异常类型内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python中的异常类型及处理方式示例详解

本文链接: https://lsjlt.com/news/133323.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中的异常类型及处理方式示例详解
    目录前言正文一、什么是异常二、异常的类型三、异常处理四、try 介绍五、finally 介绍六、raise 介绍结尾前言 Python 是一种面向对象的、解释型的、通用的、开源的脚本...
    99+
    2024-04-02
  • Java异常类型以及处理实例详解
    目录一、异常的描述二、异常的体系三、异常的分类:四、异常处理的捕捉形式五、异常处理的原则六、finally七、异常的应用八、异常的注意事项:总结一、异常的描述 程序运行时,发生的不被...
    99+
    2024-04-02
  • java中异常类型及异常处理的详细介绍
    一、异常实现及分类1.先看下异常类的结构图上图可以简单展示一下异常类实现结构图,当然上图不是所有的异常,用户自己也可以自定义异常实现。上图已经足够帮我们解释和理解异常实现了:java相关免费视频教程:java教学视频所有的异常都是从Thro...
    99+
    2015-02-22
    java入门 java 异常类型 异常处理
  • Java异常类型及处理详情
    目录一、异常处理的关键字1、throw2、throws异常结构为: Throwable 为顶级父类 子类Error为严重报错 , 子类Exception就是我们所说...
    99+
    2024-04-02
  • Java异常类型及处理方法
    这篇文章主要介绍“Java异常类型及处理方法”,在日常操作中,相信很多人在Java异常类型及处理方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java异常类型及处理方法”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • Python异常类型以及处理方法汇总
    目录前言1 异常类型1.1 Python内置异常1.2 requests模块的相关异常1.3 用户自定义异常2. 异常捕获2.1 捕获所有异常2.2 捕...
    99+
    2024-04-02
  • Python异常类型以及处理方法有哪些
    这篇文章将为大家详细讲解有关Python异常类型以及处理方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考...
    99+
    2023-06-15
  • Java异常类型介绍及处理方法
    前言: Java异常,大家都很熟悉。但是对于具体怎么分类的,JVM对其怎么处理的,代码中怎么处理的,应该怎么使用,底层怎么实现的等等,可能就会有些不是那么清晰。本文基于此详细捋一下异...
    99+
    2024-04-02
  • C#中类的异常处理详解
    目录前言异常寄语总结前言 日常编码过程中,最重要的技能不是说你学会使用很多最新的编程技术或者做出一个高大上的系统。而是你在写代码过程中,对异常的处理,是否系统可以稳定,健壮。 对于异...
    99+
    2024-04-02
  • C++异常处理方式实例详解(超级详细!)
    目录1.C语言传统的处理错误的方式2. C++异常概念3. 异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3异常安全 3.4 异常规范4.自定义异常体系5.C...
    99+
    2023-05-17
    c++ 异常处理 c++如何处理异常 c++捕获异常
  • Python的异常处理方式
    这篇文章主要介绍“Python的异常处理方式”,在日常操作中,相信很多人在Python的异常处理方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python的异常处理方式”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-04
  • Go语音开发中常见Error类型处理示例详解
    目录前言透明错误处理策略带来的问题哨兵(Sentinel)错误处理策略带来的问题1.对errors.Error()的依赖2.定义的错误类型会被公开Error types带来的问题不透...
    99+
    2022-12-08
    Go语言Error类型 Go Error
  • java 异常捕获及处理案例详解
    目录一、Java异常简介二、Java异常的分类三、异常的使用及执行流程四、自定义异常一、Java异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期...
    99+
    2024-04-02
  • Typescript中函数类型及示例详解
    目录常见写法 可选参数 默认参数 剩余参数数组类型的剩余参数 元组类型的剩余参数解构参数重载函数 构造函数类型字面量不给参数定义类型...
    99+
    2023-01-05
    Typescript中函数类型 Typescript函数类型 Typescript数据类型
  • Python中异常处理的常见问题及解决方法
    Python中异常处理的常见问题及解决方法引言:在编写程序时,很难避免出现各种各样的错误和异常。异常处理是一种机制,可以在程序运行时捕获和处理这些异常,从而保证程序的稳定性和可靠性。在Python中,异常处理是一项非常重要的技能,本文将介绍...
    99+
    2023-10-22
    异常处理 (Exception Handling) 解决方法 (Solutions) 常见问题 (Common Prob
  • SpringMVC异常处理机制与自定义异常处理方式的示例分析
    这篇文章主要介绍SpringMVC异常处理机制与自定义异常处理方式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!提到异常处理,就不得不提HandlerExceptionResolvers,我们的Dispat...
    99+
    2023-06-25
  • Java异常类型分析及处理方法是什么
    今天就跟大家聊聊有关Java异常类型分析及处理方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言:Java异常,大家都很熟悉。但是对于具体怎么分类的,JVM对其怎么处理的,...
    99+
    2023-06-22
  • 实例介绍java中异常的处理方式
    首先处理异常主要有两种方式:一种try catch,一种是throws。一、try catchtry{} 中放入可能发生异常的代码。catch{}中放入对捕获到异常之后的处理。其中catch中e.printStackTrace()作用就是,...
    99+
    2016-10-03
    java 异常 处理方式
  • 在SQL Server中使用 Try Catch 处理异常的示例详解
    目录如何在 SQL Server 中使用 Try Catch 处理错误?示例:了解 SQL Server 中的 Try-Catch 实现。在 SQL Server 中使用 try-catch 的示例如何在 SQL Ser...
    99+
    2022-07-14
    SQL Server 使用 Try Catch 处理异常 SQL Server 处理异常
  • 在SQL Server中使用 Try Catch 处理异常的示例详解
    目录如何在 SQL Server 中使用 Try Catch 处理错误?示例:了解 SQL Server 中的 Try-Catch 实现。在 SQL Server 中使用 try-c...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作