![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
第10章 Python异常处理机制
文章平均质量分 72
Python异常处理机制
愿与你共信仰
这个作者很懒,什么都没留下…
展开
-
10.15 Python assert调试程序
前面章节介绍了如何使用 IDLE 自身的调试工具调试程序,除此之外,Python 还提供了 assert 语句,也可以用来调试程序。《Python assert断言)》一节中,已经对 assert 的基本用法做了简单介绍,assert 语句的完整语法格式为:assert 条件表达式 [,描述信息]assert 语句的作用是:当条件表达式的值为真时,该语句什么也不做,程序正常运行;反之,若条件表达式的值为假,则 assert 会抛出 AssertionError 异常。其中,[,描述信息] 作为可选参数原创 2021-02-09 23:59:54 · 388 阅读 · 0 评论 -
10.14 Python IDLE调试程序详解
在程序开发过程中,免不了会出现一些错误,既有语法方面的,也有逻辑方面的。语法方面的相对比较好检测,因为当程序中有语法错误时,程序运行会直接停止,同时 Python 解释器会给出错误提示。而对于逻辑错误,可能并不太容易发现,因为程序本身运行没有问题,只是运行结果是错误的。当遇到程序有逻辑错误时,最好的解决方法就是对程序进行调试,即通过观察程序的运行过程,以及运行过程中变量(局部变量和全局变量)值的变化,可以快速找到引起运行结果异常的根本原因,从而解决逻辑错误。掌握一定的程序调试方法,是每一名合适的程序员的原创 2021-02-09 23:57:57 · 1764 阅读 · 0 评论 -
10.13 Python logging模块用法快速攻略
无论使用哪种编程语言,最常用的调试代码的方式是:使用输出语句(比如 C 语言中使用 printf,Python 中使用 print() 函数)输出程序运行过程中一些关键的变量的值,查看它们的值是否正确,从而找到出错的地方。这种调试方法最大的缺点是,当找到问题所在之后,需要再将用于调试的输出语句删掉。在 Python 中,有一种比频繁使用 print() 调试程序更简便的方法,就是使用 logging 模块,该模块可以很容易地创建自定义的消息记录,这些日志消息将描述程序执行何时到达日志函数调用,并列出指定的原创 2021-02-09 23:56:06 · 360 阅读 · 0 评论 -
10.12 Python异常机制使用细则,正确使用Python异常处理机制
前面介绍了使用异常处理的优势、便捷之处,本节将进一步从程序性能优化、结构优化的角度给出异常处理的一般规则。成功的异常处理应该实现如下 4 个目标:使程序代码混乱最小化。捕获并保留诊断信息。通知合适的人员。采用合适的方式结束异常活动。下面介绍达到这些效果的基本准则。不要过度使用异常不可否认,Python 的异常机制确实方便,但滥用异常机制也会带来一些负面影响。过度使用异常主要表现在两个方面:把异常和普通错误混淆在一起,不再编写任何错误处理代码,而是以简单地引发异常来代苦所有的错误处理。原创 2021-02-09 23:50:07 · 639 阅读 · 0 评论 -
10.11 Python自定义异常类及用法
前面的例子里充斥了很多 Python 内置的异常类型,读者也许会问,我可以创建自己的异常类型吗?答案是肯定的,Python 允许用户自定义异常类型。实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时就可以创建一个新的异常类来拥有自己的异常。其实,在前面章节中,已经涉及到了异常类的创建,例如:class SelfExceptionError(Exception): passtry: raise SelfExceptionError()except SelfExceptio原创 2021-02-09 23:35:07 · 1676 阅读 · 0 评论 -
10.10 Python traceback模块:获取异常信息
除了使用 sys.exc_info() 方法获取更多的异常信息之外,还可以使用 traceback 模块,该模块可以用来查看异常的传播轨迹,追踪异常触发的源头。下面示例显示了如何显示异常传播轨迹:class SelfException(Exception): passdef main(): firstMethod()def firstMethod(): secondMethod()def secondMethod(): thirdMethod()def t原创 2021-02-09 23:07:45 · 433 阅读 · 0 评论 -
10.9 Python sys.exc_info()方法:获取异常信息
在实际调试程序的过程中,有时只获得异常的类型是远远不够的,还需要借助更详细的异常信息才能解决问题。捕获异常时,有 2 种方式可获得更多的异常信息,分别是:使用 sys 模块中的 exc_info 方法;使用 traceback 模块中的相关函数。本节首先介绍如何使用 sys 模块中的 exc_info() 方法获得更多的异常信息。有关 sys 模块更详细的介绍,可阅读《Python sys模块)》。模块 sys 中,有两个方法可以返回异常的全部信息,分别是 exc_info() 和 last原创 2021-02-09 22:31:42 · 524 阅读 · 0 评论 -
10.8 Python raise用法
在前面章节的学习中,遗留过一个问题,即是否可以在程序的指定位置手动抛出一个异常?答案是肯定的,Python 允许我们在程序中手动设置异常,使用 raise 语句即可。读者可能会感到疑惑,即我们从来都是想方设法地让程序正常运行,为什么还要手动设置异常呢?首先要分清楚程序发生异常和程序执行错误,它们完全是两码事,程序由于错误导致的运行异常,是需要程序员想办法解决的;但还有一些异常,是程序正常运行的结果,比如用 raise 手动引发的异常。raise 语句的基本语法格式为:raise [exceptionN原创 2021-02-09 21:44:59 · 141 阅读 · 0 评论 -
10.7 Python异常处理机制结构详解
到本节为止,读者已经学习了整个 Python 的异常处理机制的结构,接下来带领大家回顾一下,在此过程还会讲解一些新的知识。首先,Python 完整的异常处理语法结构如下:try: #业务实现代码except Exception1 as e: #异常处理块1 ...except Exception2 as e: #异常处理块2 ...#可以有多个 except...else: #正常处理块finally : #资源回收块 ...整个异常处理结构的执行过程,如原创 2021-02-09 21:35:07 · 317 阅读 · 0 评论 -
10.6 Python try except finally:资源回收
Python 异常处理机制还提供了一个 finally 语句,通常用来为 try 块中的程序做扫尾清理工作。注意,和 else 语句不同,finally 只要求和 try 搭配使用,而至于该结构中是否包含 except 以及 else,对于 finally 不是必须的(else 必须和 try except 搭配使用)。在整个异常处理机制中,finally 语句的功能是:无论 try 块是否发生异常,最终都要进入 finally 语句,并执行其中的代码块。基于 finally 语句的这种特性,在某原创 2021-02-09 21:14:23 · 161 阅读 · 0 评论 -
10.5 Python try except else详解
在原本的try except结构的基础上,Python异常处理机制还提供了一个 else 块,也就是原有 try except 语句的基础上再添加一个 else 块,即try except else结构。使用 else 包裹的代码,只有当 try 块没有捕获到任何异常时,才会得到执行;反之,如果 try 块捕获到异常,即便调用对应的 except 处理完异常,else 块中的代码也不会得到执行。举个例子:try: result = 20 / int(input('请输入除数:'))原创 2021-02-09 21:07:47 · 338 阅读 · 0 评论 -
10.4 Python异常处理机制的底层实现
前面章节中,我们详细介绍了try except异常处理的用法,简单来说,当位于 try 块中的程序执行出现异常时,会将该种异常捕获,同时找到对应的 except 块处理该异常,那么这里就有一个问题,它是如何找到对应的 except 块的呢?我们知道,一个 try 块也可以对应多个 except 块,一个 except 块可以同时处理多种异常。如果我们想使用一个 except 块处理所有异常,就可以这样写:try: #...except Exception: #...这种情况下,原创 2021-02-09 21:01:34 · 239 阅读 · 0 评论 -
10.3 Python try except异常处理详解
Python中,用try except语句块捕获并处理异常,其基本语法结构如下所示:try: 可能产生异常的代码块except [ (Error1, Error2, ... ) [as e] ]: 处理异常的代码块1except [ (Error3, Error4, ... ) [as e] ]: 处理异常的代码块2except [Exception]: 处理其它异常该格式中,[] 括起来的部分可以使用,也可以省略。其中各部分的含义如下:(Error1, Error2,…)原创 2021-02-09 20:55:42 · 552 阅读 · 0 评论 -
10.2 Python异常处理机制到底有什么用?
异常处理是现代编程语言不可或缺的能力,它已经成为衡量一门编程语言是否成熟和健壮的标准之一,C++、Java、C#、Python 等高级语言都提供了异常处理机制。无论你是多么优秀的程序员,你都不能保证自己的程序永远不会出错。就算你的程序没有错,用户也不一定按照你设定的规则来使用你的程序,总有一些小白或者极客会“玩弄”你的程序。除此以外,你也不能保证程序的运行环境永远稳定,比如操作系统可能崩溃,网络可能无法连接,内存可能突然坏掉……总之,你基本什么都保证不了。但是,作为一个负责任的程序员,我们要让自己的程原创 2021-02-09 20:47:07 · 435 阅读 · 0 评论 -
10.1 什么是异常处理,Python常见异常类型
开发人员在编写程序时,难免会遇到错误,有的是编写人员疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还有的是程序运行时与系统的规则冲突造成的系统错误,等等。总的来说,编写程序时遇到的错误可大致分为 2 类,分别为语法错误和运行时错误。Python语法错误语法错误,也就是解析代码时出现的错误。当代码不符合 Python 语法规则时,Python解释器在解析时就会报出 SyntaxError 语法错误,与此同时还会明确指出最早探测到错误的语句。例如:print “Hello,World!”原创 2021-02-09 20:41:45 · 199 阅读 · 1 评论