bug分为错误(error)和异常(exception)
附:
#print前面少了 :
if True
print("hello python")
#0 是不能作为被除数的
a = 5
b = 0
print(a/b)
#执行结果:ZeroDivisionError: division by zero
一、try...except...
try:
可能引发异常的代码
except:
except 错误或异常的种类:
except ZeroDivisionError:
except ValueError:
except NameError:
捕捉异常的信息,处理异常的代码
try 语句的工作方式为:
-
首先,执行 try 子句 (在 try 和 except 关键字之间的部分);
-
如果没有异常发生, except 子句 在 try 语句执行完毕后就被忽略了;
-
如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略;
-
如果异常匹配于 except 关键字后面指定的异常类型,就执行对应的except子句,然后继续执行 try 语句之后的代码;
-
如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中;
-
如果最终仍找不到对应的处理语句,它就成为一个 未处理异常,终止程序运行,显示提示信息。
二、try...except...else...
try:
可能引发异常的代码
except:
except 错误或异常的种类:
except ZeroDivisionError:
except ValueError:
except NameError:
捕捉异常的信息,处理异常的代码
else:
如果没有发生异常,所执行的代码
while True:
x=input("请输入整数捏:")
try:
x=int(x)
except Exception as e:
print("输入错误捏")
else:
print("输入:",x)
break
三、try...except...finally
try:
可能引发异常的代码
except:
except 错误或异常的种类:
except ZeroDivisionError:
except ValueError:
except NameError:
捕捉异常的信息,处理异常的代码
finally:
无论是否发生异常,均执行的代码
def getNum(n):
try:
print('try --> ',10 / n)
except ZeroDivisionError:
print('except --> Error: ZeroDivisionError argument.')
else:
print('else -->')
finally:
print('finally -->')
1、调用:getNum(0)
输出结果:
except --> Error: ZeroDivisionError argument.
finally -->
2、调用:getNum(1)
输出结果:
try --> 10.0
else -->
finally -->
其中,else 子句只能出现在所有 except 子句之后,只有在没有出现异常时执行;finally 子句放在最后,无论是否出现异常都会执行。
附:
常用异常名:
异常名 描述
AttributeError 调用不存在的方法引发的异常
EOFError 遇到文件末尾引发的异常
ImportError 导入模块出错引发的异常
IndexError 列表越界引发的异常
IOError I/O操作引发的异常,如打开文件出错等
KeyError 使用字典中不存在的关键字引发的异常
NameError 使用不存在的变量名引发的异常
TabError 语句块缩进不正确引发的异常
ValueError 搜索列表中不存在的值引发的异常
ZeroDivisionError 除数为零引发的异常
原文链接:https://blog.csdn.net/u014612521/article/details/100132475