介绍
欢迎来到 Python 语法错误与异常处理实验!在本实验中,你将学习如何识别和修复 Python 代码中的语法错误,以及如何处理代码执行过程中可能引发的异常。
学习目标
- 语法错误
- 异常处理
欢迎来到 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
块捕获,并打印一条错误信息。
我们可以在 try
语句中使用 else
子句来指定一段代码,这段代码仅在 try
块中没有引发异常时执行:
try:
x = int(input("Enter a number: "))
except ValueError:
print("Invalid input!")
else:
print("The number is", x)
在这个示例中,try
块包含的代码可能会在用户输入无效值时引发 ValueError
。如果没有引发异常,else
块会被执行并打印输入的数字。
我们可以在 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 语法错误和异常时更加自信!