第10单元 Python异常处理 python
第10单元 Python异常处理
本单元知识点 >10.1异常的概念 >10.2异常类 >10.3异常处理 >10.4抛出异常 >10.5断言 >10.6用户自定义异常 >10.7上下文管理
本单元知识点 ➢ 10.1 异常的概念 ➢ 10.2 异常类 ➢ 10.3 异常处理 ➢ 10.4 抛出异常 ➢ 10.5 断言 ➢ 10.6 用户自定义异常 ➢ 10.7 上下文管理
10.1异常的概念 1语法错误 语法错误,也称作解析错误,也许是学习Python过程中最常见的。 下面的代码中printi有拼写错误,程序运行会报错。 扫码看视频10.1 prin("hello,world捫 Traceback(most recent call last): File "C:/Users/Administrator/PycharmProjects/ch10/ex10.1.py", line 1,in prin("hello,world") NameError:name 'prin'is not defined 语法分析器指出错误行号为第1行,因为prit少了一个“t"。错误会 输世文件名和行号,万便查我发生错误的位置
10.1异常的概念 1语法错误 语法错误,也称作解析错误,也许是学习Python 过程中最常见的。 下面的代码中print有拼写错误,程序运行会报错。 prin("hello,world") Traceback (most recent call last): File "C:/Users/Administrator/PycharmProjects/ch10/ex10.1.py", line 1, in prin("hello,world") NameError: name 'prin' is not defined 语法分析器指出错误行号为第1行,因为print少了一个“t”。错误会 输出文件名和行号,方便查找发生错误的位置。 扫码看视频10.1
10.1异常的概念 2.异常 即使语句或表达式在语法上是正确的,当试图执行它时也可能会引发 错误。当Python检测到一个错误时,解释器就会指出当前流已无法 继续执行下去,运行期检测到的错误即为异常。异常是指因为程序出 错而在正常控制流以外采取的行为
10.1异常的概念 2.异常 即使语句或表达式在语法上是正确的,当试图执行它时也可能会引发 错误。当Python检测到一个错误时,解释器就会指出当前流已无法 继续执行下去,运行期检测到的错误即为异常。异常是指因为程序出 错而在正常控制流以外采取的行为
10.2异常类 常见异常类如下: 1.TypeError(类型错误):必须是一个字符串不能是数字 2.Indentation Error(缩进错误):未知缩进不匹配任何缩进 等级 3.IndexError(索错误):字符串超出了范围 4.SyntaxError(语法错误):非法的语法 5.ValueError(值错误):子字符串未找至 6,AttributeError(属性错误):元组对象没有属性‘remove
10.2 异常类 常见异常类如下: 1.TypeError(类型错误):必须是一个字符串 不能是数字 2.IndentationError(缩进错误):未知缩进不匹配任何缩进 等级 3.IndexError(索引错误):字符串超出了范围 4.SyntaxError(语法错误):非法的语法 5.ValueError(值错误):子字符串未找到 6.AttributeError(属性错误):元组对象没有属性‘remove’
10.3异常处理 在Python程序设计中,异常处理语法结构如下: try: 扫码看祝频10.2 except: except: else: finally:
10.3 异常处理 在Python程序设计中,异常处理语法结构如下: try: except: except: else: finally: 扫码看视频10.2
10.3异常处理 【例10.2】处理打开文件异常 try: f1=open("test.txt""r") readstr=f1.read(20) except IOError: pint(没有找到文件或读取文件失败 else: print(readstr) f1.close() 执行上面这段程序时,如果所读取s.x文件不存在,程序产生异常 except语句分支捕获 序将输出:没有找到文件或读取文件失败。 在,则程序会顺利打开文件并执行©水$e话句分支, 输出文件中的前20 后关闭文件,最后程序退出
10.3 异常处理 【例10.2】处理打开文件异常 try: f1= open("test.txt" "r") readstr=f1. read(20) except IOError: print("没有找到文件或读取文件失败") else: print(readstr) f1. close() 执行上面这段程序时,如果所读取test.txt文件不存在,程序产生异常,此异常被 except语句分支捕获,程序将输出:没有找到文件或读取文件失败。如果文件存 在,则程序会顺利打开文件并执行else语句分支,输出文件中的前20个字符,然 后关闭文件,最后程序退出
10.4抛出异常 Python可以自动引发异常,也可以通过raise显式地抛出异常。 ▣▣ 一旦执行了raise语句,raise,后面的语句将不能执行。换句话说, rd$e语句允许程序员在任何必要的时候强制抛出一个指定的异 扫码看视频103 常,而不必等Python发。其语法格式如下: raise exceptionName 只要在r©ise关键字后跟上一个异常类型名,就可立即引发一个 异常,改变程序的执行路径
10.4 抛出异常 Python可以自动引发异常,也可以通过 raise显式地抛出异常。 一旦执行了raise语句,raise后面的语句将不能执行。换句话说, ralse语句允许程序员在任何必要的时候强制抛出一个指定的异 常,而不必等 Python引发。其语法格式如下: raise exceptionName 只要在 raise关键字后跟上一个异常类型名,就可立即引发一个 异常,改变程序的执行路径。 扫码看视频10.3
10.4抛出异常 【例10.6】使用raise.主动抛出异常 datal=input("请输入一个整数:" try: if datal .isdigit(): datal_int=int(datal) else: raise ValueError except ValueError: print(将数据转换成整数时出错:",data 运行程序,输入字母¤,结果为 将数据转换成整数时出错:© 以上代码在y语句块中并没有自发产生异常的代码,而是自行根据条件判桥情 况抛出了一个异常,后面的©xc©p分支会处理抛出的异常
10.4 抛出异常 【例10.6】使用raise主动抛出异常 data1=input("请输入一个整数:") try: if data1.isdigit(): data1_int=int(data1) else: raise ValueError except ValueError: print("将数据转换成整数时出错:", data1) 运行程序,输入字母a,结果为: 将数据转换成整数时出错: a 以上代码在try语句块中并没有自发产生异常的代码,而是自行根据条件判断情 况抛出了一个异常,后面的 except分支会处理抛出的异常
10.5断言 断言(assert)语句用来声明某个条件是真的,其作用是测试一个条 可回 件(condition)是否成立,如果不成立,则抛出异常。断言的语法格式 如下: 可2到 扫码看祝频10.4 assert condition [,expression] 如果condition为false,就raise一个描述为expression的 AssertionError出来。expression可以省略
10.5 断言 断言(assert)语句用来声明某个条件是真的,其作用是测试一个条 件(condition)是否成立,如果不成立,则抛出异常。断言的语法格式 如下: assert condition[,expression] 如果condition为false,就raise一个描述为 expression 的 AssertionError出来。expression可以省略。 扫码看视频10.4