1 基本概念
-异常:简单来说运行期检测到的错误 。
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。
异常是Python对象,表示一个错误。
-异常处理:计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。
2 异常类型
异常体系内部层次关系
异常总结
3 异常处理语句
1)try-except
#基本形式
#步骤
•执行try子句(在关键字try和关键字except之间的语句)
•如果没有异常发生,忽略except子句,try子句执行后结束。
•如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码。
•如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
#注意
一个try语句可能包含多个except子句,分别来处理不同的特定的异常,最多只有一个分支会被执行。
使用多个except代码块时,必须坚持对其规范排序,要从最具针对性的异常到最通用的异常。
一个 except 子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组
#example
2)try - except - finally
#基本形式
#example
3)try-except-else:else语句的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语法错误
#基本形式
#example
4 raise语句
raise语句用于抛出指定异常
*课后习题
题目:电脑产生一个零到100之间的随机数字,然后让用户来猜,如果用户猜的数字比这个数字大,提示太大,否则提示太小,当用户正好猜中电脑会提示,"恭喜你猜到了这个数是......"。在用户每次猜测之前程序会输出用户是第几次猜测,如果用户输入的根本不是一个数字,程序会告诉用户"输入无效"。
解答如下
import random
secret = random.randint(1,100) #[1,3]之间的随机数
i = 1
while True:
print('这是第%d次猜测'%i)
try:
temp = input("请输入数字:")
guess = int(temp)
except ValueError:
print('输入无效')
else:
if guess > secret:
print("太大了")
else:
if guess == secret:
print("恭喜你猜到了这个数是:%d"%secret)
break
else:
print("太小了")
i += 1
print("游戏结束")