第7章 异常处理

57 阅读3分钟

什么是异常

  • 如果代码没有语法问题,可以运行,但会出运行时的错误,例如除零错误,下标越界等问题,这种在运行期间检测到的错误被称为异常 。
  • 出现了异常必须处理否则程序会终止执行,用户体验会很差。
  • Phthon支持程序员自己处理检测到的异常。
  • 可以使用try-except语句进行异常的检测和处理。

python中常见的异常类型

image.png

try-except语句

1、首先执行try中【代码块A】,如果出现异常,立即终止代码执行,转而到except块中进行异常处理

2、异常处理except模块可以多个,从上往下匹配,如果能够匹配成功,立即执行相应的异常处理代码块,执行完毕后,不在往下匹配,转到3执行

3、执行异常处理完毕后,如果有finally字句则执行finally字句,如果没有则执行【后续语句】

4、如果匹配不到异常,有finally则执行finally,然后则抛出错误,终止程序执行。

5、如果没有异常,如果有else字句则执行else字句,执行完else后,有finally字句则执行,没有则执行【后续语句】

try:
    n = int(input('请输入一个数字'))
    n = 5 / n
    print(n)
except ZeroDivisionError as e:
    print('除数不能为0')
    print('原始报错信息',e)
except:
    print('请输入一个数字')
else:
    print('运行没有被except语句捕获,执行else模块')
finally:
    print('无论如何,都要执行finally模块')

raise关键字

手动抛出一个指定类型的异常,无论是哪种异常类都可以带一个字符串参数,对异常进行描述。 raise不带参数会把错误原样抛出

try:
    pwd = input('请输入你的密码:')
    if len(pwd)<8:
        raise Exception('密码的长度不够,请输入一个8位以上的密码')
except Exception as e:
    print(e)

PyCharm中的代码调试

image.png

知识总结

image.png

练习题

  1. 下列Python保留字中,用于异常处理结构中用来捕获特定类型异常的是 B A. def
    B. except
    C. while
    D. pass
  1. python中用来抛出异常的关键字是(C )
    A. try
    B. except
    C. raise
    D. Finally
  1. 在异常处理中,如释放资源、关闭文件、关闭数据库等由( C )来完成。 A. try字句
    B. catch子句
    C. finally子句
    D. raise子句
  1. 当方法遇到异常又不知如何处理时,下列哪种说法是正确的(B ) A. 捕获异常 B. 抛出异常 C. 声明异常 D. 嵌套异常
  1. 关于程序的异常处理,以下选项中描述错误的是C
    A. 程序异常发生经过妥善处理可以继续执行
    B. 异常语句可以与 else 和 finally 保留字配合使用
    C. 编程语言中的异常和错误是完全相同的概念 D. Python 通过 try、except 等保留字提供异常处理功能
  1. 关于python的异常处理语句说法错误的是(C   )
    A.将可能发生异常的语句放在try子句里。
    B.except子句用于捕捉并处理异常。
    C.else子句里包含了不发生异常时要执行的语句,异常处理里必须包含else句。
    D.finally子句包含了不管是否发生异常都要执行的语句。