当程序运行过程中出现错误时,python解释器就会指出当前程序流无法继续执行下去,会自动引发异常。异常处理就是在程序出错之后,为了排除错误而在正常控制流之外采取的行为。
1. Python标准异常总结
2.try - except 语句
语法格式:
try:
<被检测的程序代码>
expect<异常类型>:
<异常处理的程序代码>
# author:answer time:2019/10/20
#异常处理
try:
x=int(input("请输入数据1:"))
y=int(input("请输入数据2:"))
z=x/y
s="两次输入的数据不相等"
assert x==y,s
except AssertionError:
print(s)
else:
print("两次输入的数据相等")
try 语句按照如下方式工作:
-
首先,执行try子句(在关键字try和关键字except之间的语句)
-
如果没有异常发生,忽略except子句,try子句执行后结束。
-
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码。
-
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
-
一个try语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
try:
x=int(input('请输入数据1:'))
y=int(input('请输入数据2:'))
z=x/y
except ValueError:
print('应全部输入数据值')
except ZeroDivisionError:
print("除数不能为零")
except NameError:
print('变量不存在')
else:
print("最终结果为:",z)
- 一个 except 子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组。
try:
int("abc")
s = 1 + '1'
f = open('test.txt')
print(f.read())
f.close()
except (OSError, TypeError, ValueError) as error:
print('出错了!\n原因是:' + str(error))
3. try - except - else 语句
语法格式:
try:
<被检测的程序代码>
expect<异常类型>:
<异常处理的程序代码>
else:
<正常处理的程序代码>
# author:answer time:2019/10/30
try:
x=int(input('请输入数据1:'))
y=int(input('请输入数据2:'))
z=x/y
except ValueError:
print('应全部输入数据值')
except ZeroDivisionError:
print("除数不能为零")
except NameError:
print('变量不存在')
else:
print("最终结果为:",z)
4. try - except - finally 语句
不管try子句里面有没有发生异常,finally子句都会执行。
如果一个异常在try子句里被抛出,而又没有任何的except把它截住,那么这个异常会在finally子句执行后被抛出。
语法格式:
try:
<被检测的程序代码>
expect<异常类型>:
<异常处理的程序代码>
finally:
<正常处理的程序代码>
# author:answer time:2019/10/30
try:
x=int(input('请输入数据1:'))
y=int(input('请输入数据2:'))
z=x/y
except ValueError:
print('应全部输入数据值')
except ZeroDivisionError:
print("除数不能为零")
except NameError:
print('变量不存在')
else:
print("最终结果为:",z)
finally:
print("END")
5. raise语句
Python 使用raise语句抛出一个指定的异常。
# author:answer time:2019/10/30
try:
raise NameError("命名出错")
except NameError:
print('变量不存在')
#变量不存在