艺赛旗(RPA)Python 学习之异常

艺赛旗 RPA8.0全新首发免费下载 点击下载
http://www.i-search.com.cn/index.html?from=line1 详细内容请参看艺赛旗官网支持栏目:RPA社区
点击链接进入http://support.i-search.com.cn/

  1. 异常简介:

异常是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在 Python 无法正常处理程序时就会发生一个异常。异常是 Python 对象,表示一个错误。当 Python 脚本发生异常时我们需要捕获处理它,否则程序会终止执行

造成异常的原因:1. 程序编写有问题造成,产生 Bug ,必须处理 2. 用户输入造成的 3. 无法预料的异常:磁盘已满、断网等

Python 的错误其实也是类 class,错误类型种类很多。而且所有的错误类型都继承自 BaseException

为什么要处理异常?为了使程序遇到问题时不让程序结束,而越过错误继续向下执行。Python 内置了一套异常处理机制,来帮助我们进行错误处理

处理异常:try except finally 作用:try 语句块用来检测程序中的错误,从而让 except 语句捕获错误信息并处理。执行完 except 后,如果有 finally 语句块,则执行 finally 语句块,至此,执行完毕。

  1. 常用操作:

  2. 报出对应的异常:

try:

print(3 / 0)

except ZeroDivisionError as e:

print(“除数为零了”)

except NameError as e:

print(“变量未定义”)

else: # 注意:else语句可有可无

print(“代码没有问题”)

print(“程序继续执行”)
2. 报出对应的异常:

try:

print(4 / 0)

except: # 使用 except 捕获常规错误,而不使用任何的错误类型

print(“程序出现了错误”)

使用 except 带着多种异常,匹配到其中一种即报错

try:

print(5 / 0)

except(NameError, ZeroDivisionError):

print(“出现了 ZeroDivisionError 或 NameError”)
3. 特殊情况

“”"

特殊:

1.错误其实是 class(类),所有的错误都继承自 BaseException,所以在

捕获的时候,它不仅捕获了该类型的错误,还把子类一网打尽

“”"

try:

print(5 / 0)

except BaseException as e:

print(“出现了BaseException”)

except ZeroDivisionError as e:# 不会被执行

print(“除数为零了”)

“”"

2.跨越多层调用,main 调用了 func2 ,2 调用了 1 ,

1 出现了错误,但是只要main捕获到了就可以处理

“”"

def func1(num):

print(1 / num)

def func2(num):

func1(num)

def main():

func2(0)

try:

main()

except ZeroDivisionError as e:

print(“调用的函数出现了错误”)
4.try except finally

try:

print(1 / 0)

except ZeroDivisionError as e:

print(“除数为零了”)

finally:

print(“finally是一定会被执行的”)

try:

print(1 / 0)

finally:

print(“finally是一定会被执行的”)
5.1 print() 语句调试

“”"

通过 print() 把可能有问题的变量打印出来

用 print()最大的坏处是将来还得删掉它,

想想程序里到处都是print(),运行结果也会包含很多垃圾信息

“”"

def div(a, b):

print(b) # b可能会为 0

print(a / b)

div(10, 1)
5.2 assert 断言调试

“”"

用 print() 来查看的地方,都可以用断言(assert)来替代:

断言失败时,assert 语句本身就会抛出 AssertionError

“”"

def func(num, div):

assert (div != 0), “div不能为零”

return num / div

print(func(10, 0))
5.3 logging 调试

import logging

logging.basicConfig(level=logging.DEBUG)

“”"

logging 的好处:允许你指定记录信息的级别,有debug,info,warning,error

4个级别,当我们指定 level=logging.INFO 时,logging.DEBUG 就不起作用了。

级别高的覆盖级别低的,所以可以输出不同级别的信息,也不用删除,最后统一控制输出各个级别的信息。

logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件

“”"

def div(a, b):

logging.info(b)

print(a / b)

div(10, 0)
以上为个人整理,有问题的地方还请大家多提提意见。

猜你喜欢

转载自blog.csdn.net/weixin_44447687/article/details/88733135
今日推荐