在编写Python程序时,难免会遇到各种错误,这些错误在Python里被称为“异常(Exception)”。如果程序不处理这些异常,就会中断运行。为了让程序更加稳定,我们可以用异常处理语句try-except
来捕获并处理异常。
1. 异常处理基础:try和except
在Python里,try
语句块用来尝试运行一段可能出错的代码,except
语句块则用来捕获异常。
例子:
try:
print(x)
except:
print("出错了,变量x没有定义")
如果不使用异常处理,程序直接运行print(x)
会报错并停止运行。
2. 捕获特定类型的异常
你也可以只捕获特定类型的异常,比如只捕获变量名不存在的异常(NameError
):
try:
print(x)
except NameError:
print("变量x未定义")
except:
print("发生其他错误")
这样更精确地捕获错误,有助于我们快速定位问题。
3. else:无异常时执行
你还可以使用else
关键字,当try
代码块中没有出现任何异常时,执行else
中的代码。
try:
print("hello world")
except:
print("发生了异常")
else:
print("代码正常运行,没有异常")
4. finally:无论如何都会执行的代码
无论代码块中是否发生异常,finally
代码块都一定会被执行:
try:
print(x)
except:
print("出现了异常")
finally:
print("finally中的代码始终执行")
finally
经常用于关闭文件或释放资源,确保程序安全结束。
例子:操作文件时的异常处理
try:
f = open("demo.txt", "w")
f.write("写入内容")
except:
print("写入文件出错")
finally:
f.close()
print("文件关闭了")
5. 主动抛出异常(raise)
有时候,你可能希望程序在特定条件下抛出异常(主动中断程序),用raise
关键字可以做到:
x = -5
if x < 0:
raise Exception("数字不能为负数")
指定异常类型:
你也可以明确指定异常类型,比如:
x = "hello"
if not isinstance(x, int):
raise TypeError("只允许输入整数类型的数据")
6. Python常见的异常类型
ValueError
:值类型错误TypeError
:数据类型错误NameError
:变量名未定义ZeroDivisionError
:除数为零错误FileNotFoundError
:文件未找到错误
总结
通过以上的详细介绍,你应该能够理解并熟练运用Python中的异常处理机制了。有了try-except
结构,你的程序将更稳定,运行过程中即使遇到问题,也能轻松应对并妥善处理。