Python3之异常处理

写自动化脚本时经常会用到异常处理,下面将python中的异常处理做一整理:

注意:以下所有事列中的111.txt文件不存在,所以会引起异常

用法一:try...except...else..类型

1.没有异常时运行:

a = 3
try:
    print(a)
except BaseException as msg:   #用msg变量来接受信息,并将其打印。其中BaseException为所有异常的基类,所有异常都继承与它
    print(msg)
else:
    print("没有异常时执行")

运行结果:

3
没有异常时执行

2.有异常时运行:

a = 3
b = 4
try:
    print(a)
    open("111.txt",'r')       #使用open以只读的方式打开不存在的文件111.txt
    print(b)
except BaseException as msg:  #用msg变量来接受信息并将其打印
    print(msg)
else:
    print("没有异常时执行")

运行结果:

3
[Errno 2] No such file or directory: '111.txt'     ##该条错误信息是msg接收到的信息

上面代码中的print(b)并没有被执行,因为再该行代码的上一步出现异常

用法二:try...except...finally...类型

1.没有异常时运行:

a = 3
try:
    print(a)
except BaseException as msg:
    print(msg)
finally:
    print("不管有没有异常都会被执行")

运行结果:

3
不管有没有异常都会被执行

2.有异常时运行:

a = 3
try:
    print(a)
    open('111.txt','r')
except BaseException as msg:   
    print(msg)
finally:
    print("不管有没有异常都会被执行")

运行结果:

3
[Errno 2] No such file or directory: '111.txt'
不管有没有异常都会被执行

用法三:抛出异常(raise)

a = 3
try:
    print(a)
    open('111.txt','r')
except:
    raise Exception('111.txt no exsit')  #raise用于异常抛出

运行结果:

3
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '111.txt'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 5, in <module>           #抛出异常
Exception: 111.txt no exsit

自定义异常

class TimeError(RuntimeError):       #定义一个异常类,该类应该是典型的继承自Exception类,通过直接或间接的方式
    def __init__(self,arg):
        self.arg = arg


try:
    raise TimeError("Network timeout")   #自定义异常提示
except TimeError as e:
    print(e.arg)

运行结果:

Network timeout
当你试图去用自己的言语去讲清一些事物时,你会明白对此事物的理解是融会贯通还是一知半解
原文地址:https://www.cnblogs.com/1211-1010/p/11585964.html