09 异常处理 怼烎@ 2021-12-05 04:11 159阅读 0赞 本章内容 1、异常 2、捕获异常 3、清理操作 \------------------------------ 对于出错代码,Python提供了一个特殊的异常处理结构,可用于捕获异常,并确保无论出现异常都将执行清理代码; 1、异常 一个异常例子 IOError,当你视图打开不存在的文件的时候将引发这种错误: ![1576057-20190716165916475-2069260306.png][] 最后提示,FileNotFoundError,无法获取文件; 引发异常 Python的内置函数和库函数在引用的时候发生的错误: ![1576057-20190716170135198-1013118311.png][] 语法错误也会导致异常: ![1576057-20190716170434126-1526210575.png][] 在代码的任意地方,我们可以使用raise语句 故意引发错误; ![1576057-20190716170657476-752160993.png][] 还有很多异常结果可以在官网上查找到; 2、捕获异常 在发生异常的时候,我们可以选择两种方式: 1、忽略异常,让程序崩溃并显示栈跟踪; 2、铺货异常,并打印友好的错误消息乃至视图修复问呗; 捕获异常示例:假设你要从用户那里获取一个整数,为此你反复提示用户,知道用户输入有效的整数: def get_age(): while True: try: n = int(input('How old are you?')) return n except ValueError: print('Please enter an integer value.') 这个函数中的while循环是一个try/except块。你可将可能引发异常的代码放在try块中; try块中的代码出现异常,就将跳过其他所有未执行的语句,立即跳转到except块。在上面的语句中,如果try中出现异常,就会跳过return语句; try/except 块 try/except块的工作原理有点像if语句,但存在一个重大的不同:if语句根据布尔类型表达式的结果决定运行的代码。 int()还会引发多种异常,则代码如下: ![1576057-20190716172039818-1017032772.png][] 这表明int()至少会出于两个不同的原因引发异常ValueError,还至少会出于另一个原因引发异常TypeError。 捕获多种异常 可编写处理多种异常,一种情况如下: def convert_to_int1(s, base): try: return int(s, base) except (ValueError, TypeError): return 'error' 如果要分别处理不同的异常,可使用多个except子句: def convert_to_int2(s, base): try: return int(s, base) except ValueError: return 'value error' except TypeError: return 'type error' 捕获所有异常: 如果你在except子句中没有指定异常,它将捕获所有异常: def convert_to_int3(s, base): try: return int(s, base) except: return 'error' 上面的语句则只关心是否发生了错误,而不会去关心发生了那种错误; 3、清理操作 在try/except结构中,可以添加finally代码块,用来做清理: def invert(x): try: return 1/x except ZeroDivisionError: return 'error' finally: print('invert(%s) done' % x) 不过是否出错,最后都要执行finally代码块。这个功能特别有用,例如:通常将关闭的文件的语句放在finally块中,**这样文件肯定会被关闭**,即便发生了IOError异常; with语句: 清理操作还可以通过with语句来实现,例如: num = 1 f = open(fname) for line in f: print('%04d %s' % (num, line), end = '') num = num + 1 # 后续代码 这里,我们并不知道对象 f 合适关闭,它是在for循环结束后,可能会结束,但是不知道具体的时间;换句话说,如果这个 f 文件在使用的时候,被别人访问了,就可能出现错误; 为了确保不再需要的文件被尽早的被关闭,我们可以使用with语句来实现,如下: num = 1 wiith open(fname, 'r') as f: for line in f: print('%04d $s' % (num, line), end = '') num = num + 1 这个代码片段的屏幕输出与前一个代码片段的相同,但使用with语句时,将在for循环结束后立即执行文件对象清理操作(即关闭文件),避免了不再需要的f处于打开状态; 转载于:https://www.cnblogs.com/BurnovBlog/p/11196830.html [1576057-20190716165916475-2069260306.png]: /images/20211205/34b3d712cc084a09a790fe4c195ec117.png [1576057-20190716170135198-1013118311.png]: /images/20211205/b853c1d23e2e466aadd2ea8d1d2ca2d3.png [1576057-20190716170434126-1526210575.png]: /images/20211205/0ae4eeeb2c7349148eff448296eb1ce2.png [1576057-20190716170657476-752160993.png]: /images/20211205/5514f09fdae644a9811b9f2ed5b8b834.png [1576057-20190716172039818-1017032772.png]: /images/20211205/5755926a2b7e46df9b27d4a995c67d82.png
相关 异常处理 异常 1.什么是异常 在正常运行程序当中,即使语句或表达式在语法上是正确的,但在尝试执行时,它仍可能会引发错误。 在执行时检测到的错误被称为 “异常”,异常不一定会 ╰半橙微兮°/ 2022年12月30日 07:45/ 0 赞/ 132 阅读
相关 SpringBoot.09.SpringBoot中如何处理Filter抛出的异常 SpringBoot中如何处理Filter抛出的异常 SpringBoot中如何处理Filter抛出的异常 前言 准备工作 我会带着你远行/ 2022年12月27日 09:25/ 0 赞/ 648 阅读
相关 异常处理 所谓异常,就是以对象的方式表示一个或一类错误,该异常对象不仅封装了错误信息,还包含了错误发生时的“上下文”信息。传统的错误处理方式是,每当程序调用了某个方法进行了某种操作,程序 Bertha 。/ 2022年06月12日 05:12/ 0 赞/ 294 阅读
相关 异常处理 异常定义: 程序在运行时出现不正常情况。 问题也是现实生活中的一个具体事物,可以通过java类的形式进行描述。并封装成对象。Java对不正常 悠悠/ 2022年06月11日 08:12/ 0 赞/ 220 阅读
相关 异常处理 C++的异常处理机制被称为是不可恢复的:一旦异常被处理,程序的执行就不能够在异常被抛出的地方继续。如果这些 catch 子句不包含返回语句,在catch子句完成它的工作之后,程 忘是亡心i/ 2022年05月23日 03:55/ 0 赞/ 270 阅读
相关 异常处理 异常写入日志 package javaBase.io.others; import java.io.; import java.text.S 妖狐艹你老母/ 2021年12月21日 18:49/ 0 赞/ 399 阅读
相关 异常处理 概念 如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返 系统管理员/ 2021年12月14日 08:49/ 0 赞/ 413 阅读
相关 09 异常处理 本章内容 1、异常 2、捕获异常 3、清理操作 \------------------------------ 对于出错代码,Pyth 怼烎@/ 2021年12月05日 04:11/ 0 赞/ 160 阅读
相关 异常处理 一、Error java虚拟机无法解决的严重问题。比如:JVM系统内部错误、资源耗尽等严重情况。StackOverflowError。 针对这类错误,一般不编写针对性的代码 痛定思痛。/ 2021年11月16日 10:28/ 0 赞/ 354 阅读
相关 Python-09-文件处理 一、文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1. 打开文件,得到文件句柄并赋值给一个变量 本是古典 何须时尚/ 2021年10月26日 19:31/ 0 赞/ 304 阅读
还没有评论,来说两句吧...