介绍
欢迎来到 Python 语法错误与异常处理实验!在本实验中,你将学习如何识别和修复 Python 代码中的语法错误,以及如何处理代码执行过程中可能引发的异常。
学习目标
- 语法错误
- 异常处理
理解语法错误
当 Python 解释器无法理解代码的结构时,就会发生语法错误。这可能是由于多种问题引起的,例如缺少括号或缩进不正确。
打开一个新的 Python 解释器。
python3
以下是一个由于 for 循环末尾缺少冒号而导致的语法错误的示例:
for i in range(10)
print(i)
解释器会抛出一个语法错误,并告诉我们错误发生的位置:
File "<stdin>", line 1
for i in range(10)
^
SyntaxError: invalid syntax
脱字符号 (^) 表示语法错误的位置,错误信息告诉我们语法无效。
要修复这个语法错误,我们只需在 for 循环的末尾添加冒号:
for i in range(10):
print(i)
现在,让我们尝试一个缩进不正确的示例:
if True:
print("Hello, World!")
在这个示例中,print 语句没有正确地缩进在 if 语句下。要修复这个语法错误,我们需要正确地缩进 print 语句:
if True:
print("Hello, World!")
处理异常
异常是程序执行过程中发生的错误。在 Python 中,我们可以使用 try 和 except 语句来处理异常。
以下是一个如何处理 ZeroDivisionError 异常的示例:
try:
x = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero!")
在这个示例中,try 块包含可能引发 ZeroDivisionError 异常的代码。如果异常被引发,控制权会传递给 except 块,该块通过打印错误信息来处理异常。
我们还可以在同一个 try 块中使用多个 except 语句来处理多个异常:
try:
x = 10 / 0
y = int('abc')
except ZeroDivisionError:
print("Cannot divide by zero!")
except ValueError:
print("Invalid input!")
在这个示例中,try 块包含可能引发 ZeroDivisionError 或 ValueError 的代码。如果引发 ZeroDivisionError,带有 ZeroDivisionError 的 except 块会处理它。如果引发 ValueError,带有 ValueError 的 except 块会处理它。
抛出异常
除了处理异常之外,我们还可以使用 raise 语句在代码中抛出异常。
以下是一个如何抛出 ValueError 异常的示例:
def validate_age(age):
if age < 0:
raise ValueError("Age cannot be negative.")
try:
validate_age(-1)
except ValueError as e:
print(e)
在这个示例中,validate_age 函数会在年龄为负数时抛出 ValueError 异常。try 块调用 validate_age 函数并传入一个负数年龄,这会引发 ValueError 异常。except 块捕获该异常并打印错误信息。
捕获所有异常
有时,我们可能希望捕获 try 块中可能引发的所有异常。我们可以通过使用未指定异常的 except 语句来实现这一点:
try:
x = 10 / 0
y = int('abc')
except:
print("An error occurred!")
在这个示例中,try 块包含可能引发 ZeroDivisionError 或 ValueError 的代码。如果其中任何一个异常被引发,它都会被 except 块捕获,并打印一条错误信息。
Else 子句
我们可以在 try 语句中使用 else 子句来指定一段代码,这段代码仅在 try 块中没有引发异常时执行:
try:
x = int(input("Enter a number: "))
except ValueError:
print("Invalid input!")
else:
print("The number is", x)
在这个示例中,try 块包含的代码可能会在用户输入无效值时引发 ValueError。如果没有引发异常,else 块会被执行并打印输入的数字。
Finally 子句
我们可以在 try 语句中使用 finally 子句来指定一段代码,无论是否引发异常,这段代码都会被执行:
try:
x = int(input("Enter a number: "))
except ValueError:
print("Invalid input!")
finally:
print("Exiting program.")
在这个示例中,try 块包含的代码可能会在用户输入无效值时引发 ValueError。无论是否引发异常,finally 块都会被执行,程序随后退出。
总结
在本实验中,你学习了如何识别和修复 Python 代码中的语法错误,以及如何使用 try 和 except 语句处理异常。你还学习了如何使用 raise 语句在代码中抛出异常,以及如何在 try 语句中使用 else 和 finally 子句。
希望本实验对你有所帮助,并让你在处理 Python 语法错误和异常时更加自信!



