一般用try… except… 用来捕获异常
x = 1
y = 0
try:
x/y
except ZeroDivisionError:
print('Y can not be zero')
ZeroDivisionError是内置的异常类,在除以0时引发,
显然,当y不是0引发异常时,该异常也是不可捕获的,比如y为字符串时;
解决办法:except可以捕获多个异常,加上多个异常类,或者再加一个except
x = 1
y = 0
try:
x/y
except ZeroDivisionError:
print('Y can not be zero')
except TypeError:
print('this is not a number!')
or
x = 1
y = 0
try:
x/y
except (ZeroDivisionError,TypeError) as e:
print(e)
这样做的目的在于打印出现的异常,并保证程序继续进行下去
如果,想捕获所有异常,让程序继续运行下去,except后可不指定任何异常类,但这样会很危险,可能隐藏一些你无法预期的错误。
x = 1
y = 0
try:
x/y
except:
print('wrong!')
另外,try/except后还可以接else,finally。当无异常发生时,else将运行,当异常发生,finally将执行。
另外,警告也算一种异常,但没有异常那么错,可能只是偏离正轨。
warnings.filterwarnings(ignore/error,category=warning)#过滤警告,无视或引发错误
warnings.warn(message,category=warning)#发出特定警告