🐸

精准防御

Python 基础python-architect-09-specific-shields
奖励: 80 XP
|

通用的护盾可以防御所有伤害,但有时我们需要知道 什么 击中了我们。

是火焰陷阱?还是冰霜陷阱?Hoppy 需要根据危险做出不同的反应。

捕获特定错误

你可以告诉 Python 只捕获特定类型的错误。这就好比同时装备了“火焰盾”和“寒冰盾”。

try:
  # 某些代码
except ValueError:
  print("数值错误!")
except NameError:
  print("名字不存在!")
1
第一个陷阱

代码 int("Unlimited Power!") 试图将文本转换为数字,这会引发 ValueError。请捕获它并打印 "Spell text invalid!"

2
第二个陷阱

100 / 0 这样的代码会引发 ZeroDivisionError。请添加第二个 except 块来捕获它,并打印 "Cannot divide by zero!"

使用特定的异常捕获比使用光秃秃的 except: 更好,因为它能防止你意外隐藏了意料之外的 Bug!

参考答案
点击展开
参考答案:
try:
  spell_power = int("Unlimited Power!")
except ValueError:
  print("Spell text invalid!")

try:
  energy = 100 / 0
except ZeroDivisionError:
  print("Cannot divide by zero!")
高级技巧
想更进一步?点击展开

F. 知己知彼

  • Python 常见异常:
    • IndexError:在只有 5 个元素的列表中查找第 10 个。
    • KeyError:查找字典中不存在的键。
    • FileNotFoundError:读取不存在的文件。
Loading...
终端输出
Terminal
Ready to run...