错误处理

Python 中级:面向开发者

Jasmin Ludolf

Senior Data Science Content Developer

Pandas 回溯

显示故意抛错代码的回溯

  • exceptraise

  • 尽量预判可能出现的错误

Python 中级:面向开发者

设计思维

  • 他人可能如何使用我们的自定义函数?
  • 测试不同用法
  • 找出可能出现的错误

城市中不同通勤方式

Python 中级:面向开发者

自定义函数中的错误处理

def average(values):
    # 计算平均值
    average_value = sum(values) / len(values)
    return average_value
Python 中级:面向开发者

可能会错在哪里?

  • average() 需要列表或集合
  • 传入多个参数 🛑
  • 使用错误的数据类型 🛑
Python 中级:面向开发者

可能会错在哪里?

sales_dict = {"cust_id": ["JL93", "MT12", "IY64"],
              "order_value": [43.21, 68.70, 82.19]}
print(average(sales_dict))

带有 TypeError 的回溯

Python 中级:面向开发者

先前的错误处理

  • 控制流 ifelifelse
  • 文档字符串(docstring)
Python 中级:面向开发者

try-except

def average(values):

try:
# 可能出错的代码 average_value = sum(values) / len(values) return average_value
except:
# 发生错误时运行 print("average() accepts a list or set. Please provide a correct data type.")
Python 中级:面向开发者

raise

def average(values):
    # 检查数据类型
    if type(values) in (list, set):

# 若类型正确则运行 average_value = sum(values) / len(values) return average_value
Python 中级:面向开发者

raise

def average(values):
    # 检查数据类型
    if type(values) in (list, set):

# 若类型正确则运行 average_value = sum(values) / len(values) return average_value
else: # 发生异常时运行 raise
Python 中级:面向开发者

raise TypeError

def average(values):
    # 检查数据类型
    if type(values) in (list, set):

# 若类型正确则运行 average_value = sum(values) / len(values) return average_value
else: # 发生异常时运行 raise TypeError("average() accepts a list or set, please provide a correct data type.")
Python 中级:面向开发者

raise TypeError 输出

print(average(sales_dict))

TypeError 输出,显示提供正确数据类型的自定义消息

Python 中级:面向开发者

try-except vs. raise

try-except

  • 避免抛出错误
  • 仍可继续执行后续代码

raise

  • 会抛出错误
  • 阻止执行后续代码
Python 中级:面向开发者

Laten we oefenen!

Python 中级:面向开发者

Preparing Video For Download...