Python异常处理

Posted despatch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python异常处理相关的知识,希望对你有一定的参考价值。

2019-05-28

Python中的异常处理

需求:
  当程序遇到问题时不让程序结束,而越过错误继续向下执行

try......except.....else
格式:
try: 语句t except 错误表示码 as e: 语句2 ....... except 错误表示码 as e: 语句n else: 语句e

 

注意:
  else语句可有可无
作用:
  用来检测try语句块中的错误,从而让except语句捕获错误信息并处理

逻辑:
  当程序执行到try-except-else语句时
    1、如果当try语句执行出现错误,会匹配第一个错误码,如果匹配上就执行对应的"语句"
    2、如果try语句执行出现错误,没有匹配的异常,错误将会将提交到上一层的try语句。或者到程序的最上层。
    3、如果try语句执行没有出现错误,执行else下的语句else/得存在
  使用execpt而不使用任何的错误类型
  使用execpt带着多种异常

 

try:
  pass
except(NameError,ZreoDivisionError)
  print("出现了NameError或ZreoDivisionError")

 



特殊的一些错误:
  1、错误其实就是class(类),所有的错误都继承自BaseException,所以在捕获的时候,它不回来该类型的错误,还把子类一网打尽。
  2、跨越多层调用,main调用了func2,func2调用了func1,func1出现了错误,这是只要main捕获到了就可以处理。例如以下:

def func1(num):
    print(1/num)
def func2(num):
    func1(num)
def main():
    func2(2)
main()

写代码时内出现错误,怎么检测异常

try.....except.......finally

格式:

try:
语句1
except 错误表示码 as e:
语句2
.......

except 错误表示码 as e:
语句n
finally:
语句f
作用:语句1无论是否有错误都将继续执行最后的语句f

 

断言:

def func(num,div):
assert(div !=0),"div不能为0"
return num/div

print(func(10,0))

 

常见错误:

Name Error 变量没定义
Systax Error 语法错误
IO Error 文件错误
Zero DivisionError 10/0,除零错误
Value Error 值错误,例如a = int(‘aa’)
keyboard Interrupt 强制终止程序产生,ctrl+c强制终止程序运行

 

 

以上是关于Python异常处理的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

python常用代码片段总结

使用片段中的处理程序时出现非法状态异常

你如何在 python 中处理 graphql 查询和片段?

Java异常处理机制

java 反射代码片段