自己抛出错误
到这里为止,停住都是从那一行自己来的:要么是除以零,要么是一个没给过值的名字。raise 是另一条路。停住由你写进程序,名字由你来定,旁边再放一句短消息。
raise ValueError("empty")
print("water")
程序停在 raise 这一行。屏幕上是 ValueError 和 empty 这个词。print("water") 轮不到。这里没有做除法。这次停住是 raise 造成的,不是一次运算。
cups = 0
if cups < 1:
raise ValueError("empty")
print("water")
这个程序重新开始。cups 是 0。零比一小,所以会进入 if,raise 会运行。屏幕上还是同一次停住:ValueError 和 empty。water 不会被写出来。这一页没有人接住这次停住,程序就停在那里。
cups = 3
if cups < 1:
raise ValueError("empty")
print("water")
这个也重新开始。这一次 cups 是 3。三不比一小,所以不会进入 if。raise 根本不会运行。屏幕只写出 water,并没有停住。
raise 那一行在 if 下面往右缩进。这处缩进把它放进 if。print("water") 没有缩进。raise 一运行,程序已经停住,轮不到 water。if 被跳过时,water 会运行。
写在 raise 旁边的名字是 ValueError,不是 ZeroDivisionError。ZeroDivisionError 是除以零那次停住的名字。这里杯子的数量用不了,所以这次停住叫 ValueError。如果以后要接住它,except 必须写 ValueError。except ZeroDivisionError 接不住这一次。这样的接住不在本页的程序里。引号里的是消息。empty 是你放在名字旁边、让人看见的。Python 不会在那里写成 None。
下一页是文件。这一页只表明停住是你自己造成的。它不开文件。
杯子和你写下的停住
第一个程序停在 raise,water 不会被写出来。cups 为 0 时会进入 if,同一次停住会出现。cups 为 3 时 raise 不会运行,屏幕写出 water。这次停住的名字是 ValueError。下一页是文件。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部