python 异常捕捉并处理

初学python-flask后端

在学长的代码里经常能够看到以下有些难以理解的片段

try: 

#直接开始执行try,此处在上下文标记,如果在以下的程序中产生了异常,就会回到这里

    db.session.add_all(s_list) #把修改加入session

    db.session.commit() #提交

    return student_paper_id #返回

#随机组成的试卷存在student_paper_id

except Exception as e : 

    print(e)

    db.session.rollback()

    return const_code.STUDENT_PAPER_CODE['FAILED']

假如说,try的子句中出现了异常,则跳回到try,并执行第一个匹配该异常的except子句,在except中对异常进行处理

except 可以同时处理多个异常:这些异常将被放在一个括号里成为一个元组

except (RuntimeError, TypeError, NameError):

        pass

Exception是一个异常类,这个Exception可以由自己定义,

Exception as e则是将这个类建立一个instance实例,

print(e) 打印e的内容

 db.session.rollback() 因为在session中添加出现错误,于是把session回滚到添加之前的状态防止错误的数据添加

直接return 返回自定义的错误代码


由此示例 我们可以得知 try ex的方法

就是在try中尝试运行,假若出现了异常,则进入ex进行异常处理,这是一个非常缜密的编程习惯,在牵扯到用户数据的地方使用,可以有效地防止坏数据污染数据库,并且给出msg,便于维护 。

常用异常名

AttributeError 调用不存在的方法引发的异常

EOFError    遇到文件末尾引发的异常

ImportError 导入模块出错引发的异常

IndexError    列表越界引发的异常

IOError    I/O操作引发的异常,如打开文件出错等

KeyError  使用字典中不存在的关键字引发的异常

NameError 使用不存在的变量名引发的异常

TabError 语句块缩进不正确引发的异常

ValueError 搜索列表中不存在的值引发的异常

ZeroDivisionError   除数为零引发的异常

常常使用raise

raise 异常名

raise 异常名,数据

raise 类名

你可能感兴趣的:(python 异常捕捉并处理)