接住错误
可能停住的行放在 try 下面。except 写出你要处理的那次停住的名字。except ZeroDivisionError 只在 try 里面的停住正好是这个名字时才运行。整个 try 和 except 之后,程序继续往下走。
try:
print(1 / 0)
print("rice")
except ZeroDivisionError:
print("skip")
print("done")
屏幕上是 skip,然后 done。print(1 / 0) 在 try 里面停住。print("rice") 还在 try 里面,所以不会运行。接住这次停住,并不会回头去把 try 剩下的行做完。except 写出 skip。print("done") 在外面,所以接住之后会运行。程序并不在这次停住上结束。
名字必须对上。把 print(tea) 放进这个 try,并且从没给 tea 一个值:这次停住是 NameError。except ZeroDivisionError 不处理这个名字。程序仍然会停住。skip 不会被写出来,done 也不会。这一行不在本页的程序里。
如果 try 里面的每一行都走完了,except 就不运行。下一个程序重新开始。第一块屏幕上的东西不会留在这里。
try:
print(8 / 2)
except ZeroDivisionError:
print("skip")
print("done")
屏幕上是 4.0,然后 done。4.0 就是四,带一个小数点。没有停住,所以不写 skip。done 仍然运行,因为它在接住的外面。
try 和 except 下面的行都向右缩进。这个缩进把它们放进里面。print("done") 没有缩在 except 下面,所以不属于这次接住。try 走完时它会运行,名字对上的停住被接住时它也会运行。
下一页是你自己制造一次停住。这一页只接住某一行已经碰上的停住,而且只有名字对上才接。
写出了什么,跳过了什么
- 第一个程序写出什么?
- print("rice") 会怎样?
- 第二个程序写出什么?
- 如果 print(tea) 在 try 里面,tea 从没得到过值,而且 except 只写出 ZeroDivisionError,会怎样?
名字必须对上
第一块屏幕是 skip,然后 done。rice 不运行,因为停住之后它还在 try 里面。第二块是 4.0,然后 done,而且不写 skip。NameError 不会被 except ZeroDivisionError 接住。done 在外面,所以名字对上的停住被接住时它会运行,try 走完时它也会运行。下一页是你自己制造一次停住。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部