本问题已经有最佳答案,请猛点这里访问。

我试一试……除了代码中的块和抛出异常时。我只是想继续写代码,因为在这种情况下,一切都可以正常运行。问题是,如果保留except: block为空,或者使用#do nothing,就会出现语法错误。我不能使用continue,因为它不在循环中。是否有一个关键字可以用来告诉代码继续运行?

except:

pass

除了异常:传递# important不要吞下其他异常!

@Aaron -我同意,但问题不是这是个好主意还是坏主意

这将捕获SystemExit、KeyboardInterrupt和其他您可能不想捕获的东西。

它不会捕获KeyboardInterrupt。例如:while True: try:f = open('filedoesnot exists .txt') ' except: pass KeyboardInterrupt停止并退出代码。

@ChthonicProject一个裸露的except将捕获任何异常,包括一个KeyboardInterrupt,但只有当它发生在try内部时才会发生。在您的示例中,KeyboardInterrupt可以发生在try之前,也可以发生在except内部,在这里它不会被捕获。如果您运行一个像while True: try: pass except: pass这样的例子,您会发现KeyboardInterrupt被捕获的概率只有50%。如果您在try中使用time.sleep(1),您会发现它几乎每次都会被捕获。

这将在第一个异常之后停止执行。我只是想完全忽略所有的例外,如print('this'); 1/0; print('this too');?假设我有10个命令,我不想写10个try除了传递block。

还可以在except子句中使用...(省略号)代替pass: except: ...

通用答案

Python中的标准"nop"是pass语句:

try:

do_something()

except Exception:

pass

使用except Exception而不是一个简单的except,避免捕获像SystemExit、KeyboardInterrupt等异常。Python 2

由于上次抛出的异常在python2中被记住了,异常抛出语句中涉及的一些对象将无限期地保持活动状态(实际上,直到下一个异常)。如果这对您很重要,并且(通常)您不需要记住上次抛出的异常,您可能希望执行以下操作,而不是执行pass:

try:

do_something()

except Exception:

sys.exc_clear()

这将清除最后抛出的异常。Python 3

在python3中,保存异常实例的变量在退出except块时被删除。即使该变量先前持有一个值,在进入和退出except块之后,它将再次变得未定义。

这是一个比被接受的答案更好的答案,因为它使用"except Exception:"而不是"except:",正如其他人指出的那样,"except:"将不正确地吞下您不想捕获的其他东西,比如SystemExit和KeyboardInterrupt。

它还清除了错误,这在运行单元测试和期望异常时非常重要

注意,在python3中删除了exc_clear。docs.python.org/3/whatsnew/3.0.html # index-22。要在python3中找到一些解决这个问题的方法,请点击这里:cosmicpercolator.com/2016/01/13/…

要快速忽略多个异常,请参见stackoverflow.com/a/53575187/3140992

还可以在except子句中使用...(省略号)代替pass: except Exception: ...

在Python 3.4中有一种新的方法可以做到这一点:

from contextlib import suppress

with suppress(Exception):

# your code

下面是添加它的commit: http://hg.python.org/cpython/rev/406b47c64480

这是作者Raymond Hettinger,他讨论了这个问题以及其他各种Python的热门特性(在43:30处有相关内容):http://www.youtube.com/watch?v=OSGv2VnC0go

如果您想模拟空的except关键字,同时忽略诸如KeyboardInterrupt之类的东西(虽然您通常不会这样做),那么您可以使用with suppress(BaseException)。

编辑:看起来在3.4版本之前,ignored被重命名为suppress。

我不确定我是否喜欢这个解决方案…我想我们的想法是将3行替换为1行(try、except和pass都合并为1行)。我反对的主要事情是,这是如何引入一个新的关键字,似乎证明你可能不应该做的事情…似乎您应该始终至少记录您正在捕获的异常……

当异常被引发时,它会在try/catch或with块之外的任何地方继续执行代码吗?

这相当于将代码包装在try...catch: pass中,因此,如果在块中引发异常,则在块结束后继续执行。

@JackO'Connor:好吧,那就没什么用了……我认为它会像承诺的那样忽略异常。

@ artofwar如果我说,我会给你一个整数,但有时我会给你一个单元组,我不会告诉你我什么时候做一个或另一个;现在你的工作就是总是把整数还给我?也许您希望能够编写像with suppress(TypeError): return data[0]这样的代码(更长的示例:pastebin.com/gcvAGqEP)

@Navin Python不能假装不存在异常。假设我有一个像y = f(x) * g(x)这样的语句,然后f(x)引发一个异常。即使Python忽略它,f(x)也不会返回值,因此Python没有办法为y赋值。设计人员可能会说"假定值为None"或"跳过包含任何未计算值的表达式的语句",但这将导致非常混乱。使用try块将失败的语句分组在一起可以使事情变得简单。

@JackO’connor很好。我希望如果一个表达式引发异常,可以用None替换它。

它可以内联完成吗?比如supress(myFunc, suppressedException, returnValueOnFailure)?

@JeromeJ不能直接使用suppress实现这一点,因为它是一个上下文管理器。(有关上下文管理器如何工作的详细信息,请参见这里:docs.python.org/3.4/library/stdtypes.html#typecontextmanager??)但是,如果需要的话,可以在内部定义使用suppress或普通的try块的自己的callCatchingExceptions函数。

顺便说一句,django在2017-09年恢复使用with suppress(Exception),因为try/except性能更好。检查这个提交是否恢复了"Fixed #27818——用context .su…

试试这个:

try:

blah()

except:

pass

python重命名异常_Python:如何忽略异常并继续?相关推荐

  1. python重命名窗口_Python:即时重命名方法名称

    如果要继续在已切换到使用属性的对象上使用get_Field和set_Field(您只需访问或分配给Field),则可以使用包装器对象: class NoPropertyAdaptor(object): ...

  2. python重命名文件源码

    把写内容过程中比较重要的内容做个收藏,下面的内容段是关于python重命名文件的内容. import os cur_path = os.getcwd() lists = os.listdir( cur ...

  3. python 重命名的方法,python如何重命名文件

    欢迎访问少儿编程网(http://www.pxcodes.com)python重命名文件的方法:首先打开pycharm,找到要重命名的文件:然后依次选择[Refactor-Rename],在重命名窗口 ...

  4. python重命名异常_python异常处理

    异常处理 为什么需要异常处理 写程序没有人敢保证一定不会出现错误,所以异常处理就是提供给开发者在可能出现bug的位置提示错误信息 异常的一半形式 try: 需要检测的语句 except 捕获的类型 a ...

  5. python显示语言错误_Python错误和异常

    错误和异常 Python 中(至少)有两种错误:语法错误和异常( syntax errors 和 exceptions ). 1.1.语法错误 语法错误,也被称作解析错误: while True pr ...

  6. python判断正确错误_python错误和异常

    Python3 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误 ...

  7. python assertionerror是什么异常_Python 断言和异常

    Python 断言和异常 Python断言 断言是一种理智检查,当程序的测试完成,可以将其打开或关闭.断言的最简单方法就是把它比作raise-if语句(或更加准确,raise-if-not声明).一个 ...

  8. python重命名文件或目录_Python重命名多个文件的实例方法

    Python中如何重命名多个文件 在Python3中可以使用rename()方法+listdir()方法来重命名多个文件,这两个方法都是os模块的一部分,非常方便.下面本篇文章就来带大家了解一下ren ...

  9. python语法错误概述_Python 错误和异常代码详解

    程序中的错误一般被称为 Bug,无可否认,这几乎总是程序员的错... 程序员的一生,始终伴随着一件事 - 调试(错误检测.异常处理).反反复复,最可怕的是:不仅自己的要改,别人的也要改...一万头草泥 ...

  10. python 重命名的方法_Python下OS模块重命名方法renames

    在python中有很多强大的模块,其中我们经常要使用的就是OS模块,OS模块提供了超过200个方法来供我们使用,并且这些方法都是和数据处理相关的,这里介绍下重命名这个方法. OS的重命名方法是os.r ...

最新文章

  1. 图片管理之获取图片列表数据
  2. 网络对抗技术_实验二_网络嗅探与欺骗
  3. 并发编程-11线程安全策略之线程封闭
  4. u盘重置后计算机不显示了,u盘不显示盘符怎么办
  5. CodeForces730E Award Ceremony(拓扑排序+结论)
  6. java生日正则表达式_java之正则表达式、日期操作
  7. asp 文本转时间_三分钟学会在ASP.NET Core MVC 中使用Cookie
  8. Web3.0网关Deeper Network计划于本月末在四个平台上进行IDO
  9. appender log4j 扩展_详解Tomcat使用Log4j输出catalina.out日志
  10. fortran 学习记录2
  11. android 清理大师 编程,清理大师 Android v2.3.3
  12. 美国大学计算机理论专业phd,专家:美国大学计算机专业PHD申请难度有多大
  13. “白发”位置竟暗示五脏六腑健康状况
  14. elasticsearch索引、文档、映射等概念
  15. spring boot网上购物系统毕业设计源码311236
  16. ABB 120 六轴机械手臂编程调试(二)
  17. [8]Deep Learning Software-深度学习软件
  18. 英语语法笔记——冠词
  19. windows电脑使用nvm安装node,管理node版本
  20. 华三服务器hdm时间怎么修改,华三服务器HDM命令设置

热门文章

  1. 分数阶的预估校正算法及实现
  2. 【mysql】加密与解密函数
  3. FCM和Threshold
  4. 2022BUAA数据结构期末大作业的一些想法
  5. 同个网络的两台计算机怎么设置局域网,两台电脑怎么样连在同一个局域网
  6. PotPlayer没有声音解决方案
  7. 安防大数据时代,IP摄像机的发展历程
  8. 印度程序员和中国程序员的区别
  9. Teemo Attacking 题解
  10. 几种镜像恒流源电路分析!