程序运行时可能会出现错误。我们可以在程序崩溃之前,使用 异常处理 来 处理 这些错误。这确保了即使出现问题,程序也能平稳运行。
什么是异常?
一个 异常 是在程序执行期间发生的错误。当发生异常时,Python 停止程序 并显示错误消息。
常见异常类型:
ZeroDivisionError – 当除以零时 ValueError – 当尝试使用错误类型的值时 FileNotFoundError – 当文件不存在时 IndexError – 当访问列表中的无效索引时 KeyError – 当访问字典中缺失的键时 TypeError – 当对错误类型的数据执行操作时
处理异常使用try和except
为了防止程序崩溃,使用try和except。
基本示例:
try:
num = int(input("Enter a number: "))
result = 10 / num
print("Result:", result)
except ZeroDivisionError:
print("Error: You cannot divide by zero!")
except ValueError:
print("Error: Please enter a valid number!")
说明:
- 尝试块运行代码。
- 如果发生错误,except 块 捕获 它并打印一条消息。
处理多个异常
可以使用多个except块来处理不同的错误。
try:
data = [1, 2, 3]
print(data[5]) # This will cause IndexError
except IndexError:
print("Error: Index is out of range!")
except KeyError:
print("Error: Key not found in dictionary!")
只有匹配的异常块才会运行。
使用except处理任何错误
我们可以使用except Exception来捕获任何错误。
try:
x = 10 / 0
except Exception as e:
print("An error occurred:", e)
这在我们不确定可能发生哪种错误时很有用。
使用else和finally
else – 如果没有错误发生
try:
num = int(input("Enter a number: "))
print("You entered:", num)
except ValueError:
print("Error: Invalid input!")
else:
print("No errors occurred!")
else 块仅在未发生异常时运行。
finally– 无论怎样都会运行
try:
file = open("test.txt", "r")
print(file.read())
except FileNotFoundError:
print("Error: File not found!")
finally:
print("This will always run!")
最终用于关闭资源,如文件或数据库。
引发自定义异常
我们可以使用raise来创建我们自己的异常。
def check_age(age):
if age < 18:
raise ValueError("You must be at least 18 years old.")
else:
print("Access granted!")
try:
check_age(16)
except ValueError as e:
print("Error:", e)
在程序中设置规则时很有用。
结论
关键要点:
- 使用 try 和 except 来 捕获错误。
- 处理 多个异常 分别。
- 使用except Exception进行通用错误处理。
- 使用else表示仅在未发生错误时运行的代码。
- 使用finally进行清理任务。
- 使用 raise 创建 自定义异常。