try语句用于检测程序中的异常。try子句中的代码被执行,如果没有异常发生,则不执行except子句。如果在try子句中发生了异常,则跳过try子句中剩余的代码,然后执行一个或多个except子句,最后执行finally子句。
示例:
try:
x = 1 / 0
except ZeroDivisionError:
print("Error: Cannot divide by zero.")
finally:
print("This code will always run.")
上面的程序中,在try子句中执行了1 / 0,这会导致一个ZeroDivisionError异常。由于这个异常是被except子句所捕获的,因此不会中断程序执行,而是执行except子句中的代码。最后finally子句中的代码也会被执行。
Python中有很多不同类型的异常,它们都是从BaseException类继承而来。常见的异常包括:
SyntaxError:语法错误
NameError:使用未定义的变量
TypeError:对类型不正确的操作
IndexError:索引超出序列范围
ValueError:传入无效的参数
KeyError:试图访问字典中不存在的键
FileNotFoundError:找不到文件或目录
ZeroDivisionError:除数为零
ImportError:导入模块失败
KeyboardInterrupt:用户中断程序执行
Exception:一般性异常
这只是一小部分异常,实际上还有很多其他类型的异常。可以使用 try… except… 来捕获异常。在except子句中可以指定特定类型的异常,也可以使用通配符来捕获所有类型的异常。
在 Python 中,通配符是一个特殊的符号,用于匹配任意字符或字符集。在 except 子句中,通配符可以用来捕获所有类型的异常。
示例:
try:
x = 1 / 0
except Exception:
print("An error occurred.")
上面的程序中,使用了通配符,因此会捕获所有类型的异常,所以不管是 ZeroDivisionError, 亦或是其他任意异常,都会执行 except 子句中的代码。
通配符可以用来缩短代码,并且可以在不知道具体异常类型的情况下处理异常。但是通配符在捕获异常的时候会忽略异常类型的差异性,所以使用通配符的时候需要小心。
使用通配符是不建议的,因为这样会导致程序难以调试,因为无法确定具体是哪个异常引起了程序中断。建议使用具体的异常类型来捕获异常。