错误try……except……else……finally 记录错误logging 抛出错误raise
1、错误处理机制 try……except……finally
格式:
try:
可能出错的代码
except xxx1Error as e:
处理1
except xxx2Error as e:
处理2
except xxx3Error as e:
处理3
……
else:
处理n
finally:
最终处理
运行步骤:
try语句没错误,执行try、else和finally;
有错误,根据碰到的第一个错误判断执行该错误对应的Error
最后无论有无错误,最后都会执行finally(finally可以省略不写)
2、记录错误
logging模块,使用前要先
import logging
作用:记录错误,并且跳过错误节点,让程序继续进行(正常情况下出错则程序停止运行)
举例:一个除0错误的记录,并在发生错误后程序仍能继续运行后半部分
import logging
def foo(s):
return 10/int(s)
def bar(s):
return foo(s)*2
def main():
try:
bar('0')
except Exception as e:
logging.exception(e)
finally:
print('finally') #运行
main()
print('End') #错误发生在main(),而main()后的程序仍能继续运行
Error: division by zero
finally
End
3、抛出错误raise
如果程序中只是一个单raise,那就会把当前错误原样抛出。
另外,在Except中raise一个Error,还可以把一种类型的错误转化为另一种类型
try:
10/0
except ZeroDivisionError:
raise ValueError('input error!')
但应注意符合逻辑,比如就不能把IOError转化为不相干的ValueError
错误try……except……else……finally 记录错误logging 抛出错误raise的更多相关文章
- Python错误 -- try/except/finally 、调用栈、记录错误、抛出错误
Bug:程序编写有问题造成的错误,称之为Bug. debug:调试 注意:bug是程序本身有问题.有缺陷.系统漏洞 异常:完全无法在程序运行中预测的错误,例如写入文件的时候,磁盘满了,写不进去了 ...
- 《从零开始学Swift》学习笔记(Day54)——抛出错误
原创文章,欢迎转载.转载请注明:关东升的博客 能放到try后面调用函数或方法都是有要求的,他们是有可能抛出错误,在这些函数或方法声明的参数后面要加上throws关键字,表示这个函数或方法可以抛出错误. ...
- PostgreSQL 抛出错误信息(错误行号)
抛出错误行号是我们在写SQL中常用到的,在SQL Server和Oracle中都很简单,但是在PostgreSQL怎么实现呢?在网上查了下资料只有pg_exception_context包含错误行,我 ...
- [Go] 如何正确地 抛出 错误 和 异常(error/panic/recover)?
序言 错误 和 异常 是两个不同的概念,非常容易混淆.很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误.从表面上看,一切皆错误的思路 ...
- Lua 自己实现排序sort比较方法,抛出错误invalid order function for sorting
明天新功能就要上了,结果刚刚突然QA说项目抛出了错误.握草,吓得立马出了一身汗. 查了一下错误,发现可能是自己写的不稳定排序造成的.自己感觉应该就是.把排序方法写成稳定的之后,代码分离编译进手机,跑了 ...
- .NET WebAPI 正确抛出错误详细信息
try { ... } catch (Exception e) { //在webapi中要想抛出异常必须这样抛出,否则之抛出一个默认500的异常 var resp = new HttpResponse ...
- Swift 4.0 中的错误处理及抛出错误
在Swift的标准库,很多方法名后都带有'throws'这个关键词, 'throws'表示该方法在执行过程中遇到错误则抛出,但不会crash. 下面是Swift标准库中的一个构造方法,String.D ...
- ASP.NET全局错误处理和异常日志记录以及IIS配置自定义错误页面
应用场景和使用目的 很多时候,我们在访问页面的时候,由于程序异常.系统崩溃会导致出现黄页.在通常的情况下,黄页对于我们来说,帮助是极大的,因为它可以帮助我们知道问题根源,甚至是哪一行代码出现了错误.但 ...
- yii抛出错误页面CHttpException
public void __construct(integer $status, string $message=NULL, integer $code=0) $status integer HTTP ...
随机推荐
- 用python设计猜大小的游戏
import random def roll_dice(numbers = 3,points = None): print("------摇骰子------") if points ...
- request.getServletContext()爆红问题
ServletRequest的getServletContext方法是Servlet3.0添加的,这个可以看一下官方文档 http://docs.oracle.com/javaee/6/api/jav ...
- mysql的innodb缓存使用率统计
show 方式去查看: show status like '%innodb_buffer_pool_pages%'; 计算方式: (total-free)/total * %100: sql方式查看: ...
- 使用Xamarin开发移动应用示例——数独游戏(四)产生新游戏算法改进
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们使用一个数组保存预制的游戏,然后随机从中抽取一个游戏作为新游戏,如果 ...
- django之django-debug-toolbar调试工具配置与使用
外部链接:https://blog.csdn.net/weixin_39198406/article/details/78821677 django-debug-toolbar的作用:进行性能调优,与 ...
- MySQL8.0.28安装教程全程参考MySQL官方文档
前言 为了MySQL8.0.28安装教程我竟然在MySQL官方文档逛了一天,至此献给想入门MySQL8.0的初学者.以目前最新版本的MySQL8.0.28为示例进行安装与初步使用的详细讲解,面向初学者 ...
- Argo 安装和 workflow 实例配置文件解析
一.Argo 安装配置 1.1 Argo 安装 $ kubectl create ns argo $ kubectl apply -n argo -f https://raw.githubuserco ...
- linux下格式化json文件数据
一.使用 python -m json.tool cat test.json | python -m json.tool 二.jq格式化 在web 2.0时代json这种直观.灵活.高效数据格式基本已 ...
- MySQL--数据表操作--行转列和列转行
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11782549.html MySQL--数据表操作: 会用到的查询操作. 1. Limit的用法 ...
- MySQL基本命令语法之select
目录 MySQL基本命令语法之select 查询去重以及常数 空值与着重号 着重号 空值 运算符 算术运算符 比较运算符 符号型 非符号型 逻辑运算符 优先级 排序分页 排序 分页 拓展 多表查询 等 ...