Python异常处理机制

异常处理机制,就是在程序运行出错时,让Python解释器执行事先准备好的出错程序,进而尝试恢复程序的执行。

借助异常处理机制,可以在程序崩溃前做一些必要的工作,例如将内存中的数据写入文件、关闭打开的文件、释放分配的内存等。

Python异常处理机制会涉及try、except、else、finally 这个关键字,同时还提供了可主动使程序引发异常的 raise 语句。

错误大致分为2类:语法错误 和 运行时错误

语法

try: 可能产生异常的代码块 except [ (Error1, Error2, ... ) [as e] ]: 处理异常的代码块1 except [ (Error3, Error4, ... ) [as e] ]: 处理异常的代码块2 except [exception]: 处理其它异常 当程序发生不同的意外情况时,会对应特定的异常类型,Python 解释器会根据该异常类型选择对应的 except 块来处理该异常。 该格式中,[] 括起来的部分可以使用,也可以省略。其中各部分的含义如下: (Error1, Error2,...) 、(Error3, Error4,...):其中,Error1、Error2、Error3 和 Error4 都是具体的异常类型。显然,一个 except 块可以同时处理多种异常。 [as e]:作为可选参数,表示给异常类型起一个别名 e,这样做的好处是方便在 except 块中调用异常类型(后续会用到)。 [Exception]:作为可选参数,可以代指程序可能发生的所有异常情况,其通常用在最后一个 except 块。

例1

try: a = int(input("输入被除数:")) b = int(input("输入除数:")) c = a / b print("您输入的两个数相除的结果是:", c ) except (ValueError, ArithmeticError): print("程序发生了数字格式异常、算术异常之一") except : print("未知异常") print("程序继续运行") 输入被除数:a 程序发生了数字格式异常、算术异常之一 程序继续运行

例2

try: result = 20 / int(input('请输入除数:')) print(result) except ValueError: print('必须输入整数') except ArithmeticError: print('算术错误,除数不能为 0') else: print('没有出现异常') print("继续执行") 请输入除数:4 5.0 没有出现异常 继续执行

例3

try: a = int(input("请输入 a 的值:")) print(20/a) except: print("发生异常!") else: print("执行 else 块中的代码") finally : print("执行 finally 块中的代码") 请输入 a 的值:4 5.0 执行 else 块中的代码 执行 finally 块中的代码 try: #发生异常 print(20/0) finally : print("执行 finally 块中的代码") 执行 finally 块中的代码 Traceback (most recent call last): File "D:\\1.py", line 3, in <module> print(20/0) zeroDivisionError: division by zero

raise

Python允许我们在程序中手动设置异常,使用 raise 语句即可。

raise [exceptionName [(reason)]] 其中,用 [] 括起来的为可选参数,其作用是指定抛出的异常名称,以及异常信息的相关描述。如果可选参数全部省略,则 raise 会把当前错误原样抛出;如果仅省略 (reason),则在抛出异常时,将不附带任何的异常描述信息。 raise 语句有如下三种常用的用法: raise:单独一个 raise。该语句引发当前上下文中捕获的异常(比如在 except 块中),或默认引发 RuntimeError 异常。 raise 异常类名称:raise 后带一个异常类名称,表示引发执行类型的异常。 raise 异常类名称(描述信息):在引发指定类型的异常的同时,附带异常的描述信息。

关注我,了解更多技术问题

1.《如何对数据异常值处理,python数据异常值的处理》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《如何对数据异常值处理,python数据异常值的处理》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3295683.html