python如何吞任何形式的异常?
问题描述
经常看到有些模块,任何异常都不会崩溃,然后还是继续运行代码,自己试过在程序最外面加上try ----catch----但是好像并不能把所有错误信息都吞了,好像只对块内代码起作用,要是跳到另外的方法仍然会抛出异常,那种吞异常的是怎么写的呀?我现在有个需求要求代码一直跑。即使有异常也不能退出。。。请教各位大神指点
问题解答
回答1:这需要封装一个框架,然而你所描述的任何错误都继续运行。这种要求是你假设即使有错误也不影响程序的运行结果,那么这就意味着你自己能够控制错误的范围,如果这种错误发生的概率很大并且并不是致命的,你希望通过在主线程捕获,任何异常最终通过程序入口抛出。所以你应该是在程序运行启动块进行捕获。
try: main()except: pass
这种方式当出现异常是也会退出,如果希望再继续尝试。可以加一个循环
while time_out < max_time_out: try:main() except:passtimeout+=100
但这种方式必须你自己非常清楚程序在若干次尝试后能够正常,否则还是会退出。最后我想说的是,程序因为异常挂掉是提醒你真的应该去修复而不是忽略。如果忽略可以继续运行但是带来了错误的结果,你将后悔不已~
回答2:应该是
try....except
另外你在最外层加try..except,当程序出错后,只会在最外层捕捉到错误,然后就退出了,我有一个办法,不过出错后只能重头开始(最好找到出错的地方)
import sysdef main(): print(1) int(’s’)def main1(): print(2) while True:try: main()except KeyboardInterrupt: sys.exit()except Exception: passif __name__ == ’__main__’: main1()
相关文章:
1. 面向对象编程 - java动态加载和类型转换问题?2. java - springMVC配置的controller无法返回jsp文件3. javascript - 看一些高手写代码单独用 “$”和“_” 来表示变量,什么时候单独使用这两个字符?4. python - 关于beautifulsoup获取文档内容5. MySQL 中怎么修改字段名,不更改属性?6. Python爬取网页requests乱码7. android的checkbox在xml添加和在java代码中添加样式不一样?8. 前端 - 使用vue2服务端渲染的时候,如何在服务端请求数据,然后给vue渲染9. javascript - 项目用IE浏览器打开修改前端内容,后台数据修改了,但是前端页面内容不变,用谷歌浏览器测试前端页面可以刷新,求大神解决。10. mysql - 仅仅只是把单引号与反斜杠转义不用prepare statement能否避免sql注入?
