python异常处理详解

时间:2021-08-04
本文章向大家介绍python异常处理详解,主要包括python异常处理详解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

try except

python语言中,用try except语句块捕获并处理异常,其基本语法结构如下所示:

try:
    可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:
    处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
    处理异常的代码块2
except  [Exception]:
    处理其它异常

1. 如上述句式所示,try有且仅有一个,except可以有多个,且每个except可以处理多个异常。

2. 其中 [ ] 可以使用也可以省略。

3. [as e] 作为可选参数,相当于给异常起一个别名,方便在 处理异常的代码块中调用异常。

4. [Exception]:作为可选参数,可以代指程序可能发生的所有异常情况,其通常用在最后一个 except 块。

例子:

try:
    1/0
except Exception as e:
    # args:返回异常的错误编号和描述字符串;
    print(e.args)
    # str(e):返回异常信息,但不包括异常信息的类型;
    print(str(e))
    # repr(e):返回较全的异常信息,包括异常信息的类型
    print(repr(e))
else:
  print(‘程序正常运行’)

try...finally

try...finally...语句无论是否发生异常都将会执行最后的代码

try:
    可能产生异常的代码块
finally:

print('无论异常与否,都会执行我')

raise主动触发异常

例子:如果参数是0,则主动抛出ValueError错误

def not_zero(num):
    try:
        if num == 0:
            raise ValueError('参数错误')
        return num
    except Exception as e:
        print(e)
 
 
not_zero(0)

采用traceback模块查看异常

格式:

try:

代码块

except:

traceback.print_exc()

例子:

import traceback
 
try:
    1/0
except Exception as e:
    traceback.print_exc()
    
# 运行结果:
Traceback (most recent call last):
  File "E:/PycharmProjects/ProxyPool-master/proxypool/test.py", line 4, in <module>
    1/0
ZeroDivisionError: division by zero
 

另外,print_exc()还可以接受file参数直接写入到一个文件。比如可以像下面这样把相关信息写入到tb.txt文件去。

traceback.print_exc(file=open('tb.txt','w+'))

原文地址:https://www.cnblogs.com/dzwclimber/p/15100887.html