知行编程网知行编程网  2022-09-08 15:00 知行编程网 隐藏边栏  8 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python如何自定义捕获错误的相关知识,包括python捕获异常后处理,以及python异常处理try这些编程知识,希望对大家有参考作用。

python自定义如何捕获错误

异常捕捉:

try: 
    XXXXX1
    raise Exception(“xxxxx2”) 
except (Exception1,Exception2,……): 
    xxxx3
else:
    xxxxx4
finally:
    xxxxxxx5

1.raise 语句可以自定义报错信息,如上。

2、raise之后的语句不会被执行,因为已经抛出异常,控制流会跳转到异常捕获模块。

3、except语句后面可以跟一个except有多个异常,也可以用多个语句捕获多个异常,分别处理。

4、如果except语句捕获的异常没有发生,则不执行except语句中的语句块。而是执行 else 中的语句

5、上面语句中try/except/else/finally出现的顺序必须是try->except X->except->else->finally,即所有的except都必须在else和finally之前,else(如果any) words) 必须在 finally 之前,并且 except X 必须在 except 之前。否则会出现语法错误。

6.else和finally都是可选的.

7、上述完整语句中,else语句的存在必须以except X或except语句为前提。如果在没有except语句的try块中使用else语句,会导致语法错误。

异常参数输出:

try:
    testRaise()
except PreconditionsException as e: #python3的写法,必须用as
    print (e)

自定义异常只需要自定义异常类继承父类Exception即可。在自定义异常类中,重写父类的init方法。

class DatabaseException(Exception):
    def __init__(self,err='数据库错误'):
        Exception.__init__(self,err)

class PreconditionsException(DatabaseException):
    def __init__(self,err='PreconditionsErr'):
        DatabaseException.__init__(self,err)

def testRaise():
    raise PreconditionsException()

try:
    testRaise()
except PreconditionsException as e:
    print (e)

注意:PreconditonsException又是DatabaseException的子类。

所以如果,raise PreconditionException的话,用两个异常类都可以捕捉。

但是, 如果是raise DatabaseException, 用PreconditonsException是捕捉不到的。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享