Python3笔记046 - 9.1 异常处理

第9章 异常处理及程序调试

9.1 异常处理

python中常见的异常

序号 异常 描述
01 NameError 尝试访问一个没有声明的变量引发的错误
02 IndexError 索引超出序列范围引发的错误
03 IndentationError 缩进错误
04 ValueError 传入的值错误
05 KeyError 请求一个不存在的字典关键字引发的错误
06 IOError 输入输出错误
07 ImportError 当import语句无法找到模块引发的错误
08 AttributeError 尝试访问未知的对象属性引发的错误
09 TypeError 类型不合适引发的错误
10 ZeroDivisionError 除数为0引发的错误

异常处理语句

1、try...except语句

使用try...except语句捕获异常,当程序出错时,输出错误信息后,程序会继续执行。

# 异常语法
try:
    block1
except [ExceptionName [as alias]]:
    block2
参数说明:
block1:表示可能出现错误的代码块
[ExceptionName [as alias]]:可选参数,用于指定要捕获的异常。
block2:表示进行异常处理的代码块。
# try...except举例,最常用的,只给出笼统的异常名称:Exception
try:
    value = 8 / 0
    print("value is:", value)
except Exception as e:
    print(e)
# try...except举例,给出具体的异常匹配名称:ZeroDivisionError
try:
    value = 8 / 0
    print("value is:", value)
except ZeroDivisionError:
    print("0不能作为除数!")

2、try...except...else语句

# try...except...else举例
try:
    value = 8 / 2
    print("value is:", value)
except ZeroDivisionError:
    print("0不能作为除数!")
else:
    print("value is normal")

3、try...except...finally语句

try:
    block1
except [ExceptionName [as alias]]:
    block2
finally:
	block3
参数说明:
finally:在任何情形都必须执行的代码,放在block3代码块中
# try...except...finally举例
'''
异常处理流程:将有可能出错的代码放在try语句后,将出错类型放在except语句后,一个except后面接一种异常类型,可以有多个except,将必须执行的代码放在finallly语句中。程序开始执行,第一种情况try语句后面的代码未出错,就不执行except语句,执行finally语句;第二种情况出错类型匹配成功,执行相应的except语句的代码,执行finally语句;第三种情况出错类型匹配不成功,报错,继续执行finally语句。
'''
try:
    value = 8 / 2
    print("value is:", value)
except ZeroDivisionError:
    print("0不能作为除数!")
except NameError:
    print("name is not defined")
finally:
    print("finally一定会被执行的")

4、使用raise语句抛出异常

如果某个函数或方法可能会产生异常,但不想在当前函数或方法中处理这个异常,则可以使用raise语句在函数或方法中抛出异常。在抛出异常时,要尽量选择合理的异常对象,而不应该抛出一个与实际内容不相关的异常。

raise [ExceptionName[(reason)]]
# raise 举例
def mye( level ):
    if level < 1:
        raise Exception,"Invalid level!"
        # 触发异常后,后面的代码就不会再执行
try:
    mye(0)  # 触发异常
except Exception,err:
    print 1,err
else:
    print 2
posted @ 2020-07-30 00:03  测试工匠麻辣烫  阅读(129)  评论(0编辑  收藏  举报