导入
异常和回溯
识别运行时错误,逐行解读 Python 堆栈跟踪以定位错误,并识别最常见的异常类型。
1# 缺少冒号会导致语法错误 2if True 3 print("这行代码永远不会执行。")
1# 这段代码语法正确,但尝试执行一个不可能的操作 2numerator = 10 3denominator = 0 4 5# 这一行会引发运行时错误(异常) 6result = numerator / denominator 7 8print("这行代码永远不会被执行。")
1age = 25 2message = "I am " + age + " years old."
1# "xyz" 是字符串(int() 的正确类型),但它不是一个数字(无效值) 2number = int("xyz")
1colors = ["red", "green", "blue"] 2# 列表的索引是 0、1、2。我们请求的是索引 3。 3print(colors[3])
1def function_a(): 2 print("Function A is calling Function B...") 3 function_b() 4 5def function_b(): 6 print("Function B is calling Function C...") 7 function_c() 8 9def function_c(): 10 print("Function C is calculating...") 11 # 错误发生在这里 12 result = 10 / 0 13 14# 我们从这里开始调用链 15function_a()
代码示例
1Traceback (most recent call last): 2 File "program.py", line 15, in <module> 3 function_a() 4 File "program.py", line 3, in function_a 5 function_b() 6 File "program.py", line 7, in function_b 7 function_c() 8 File "program.py", line 12, in function_c 9 result = 10 / 0 10ZeroDivisionError: division by zero
1def get_user_name(user_id): 2 # 想象一个数据库查询失败并返回 None 3 return None 4 5def welcome_user(user_id): 6 name = get_user_name(user_id) 7 # 崩溃发生在这里,但问题在于 'name' 是 None 8 print("Welcome, " + name.upper()) 9 10welcome_user(42)
代码示例
1AttributeError: 'NoneType' object has no attribute 'upper'
1numbers = [10, 20, 30] 2 3# 我们想要循环 3 次,但起始为 1 并包含 3? 4for i in range(1, 4): 5 print(f"Index {i}: {numbers[i]}")