Questions tagged «exception-handling»

异常是一种异常情况,需要偏离程序的正常流程。通常,异常不应导致完全失败,而应由异常处理程序来处理。异常处理是许多编程语言中的内置构造。通常,通过展开堆栈来处理异常,从而回滚到异常范围之外的已定义状态,然后调用处理程序块或例程。

8
更好地“尝试”某些东西并捕获异常或测试是否有可能首先避免异常?
我应该测试if某种东西是有效的还是只是try为了做它并捕获异常? 有没有可靠的文档说首选方法? 还有一种方法更pythonic吗? 例如,我应该: if len(my_list) >= 4: x = my_list[3] else: x = 'NO_ABC' 要么: try: x = my_list[3] except IndexError: x = 'NO_ABC' 一些想法... PEP 20说: 错误绝不能默默传递。 除非明确地保持沉默。 应该使用a try而不是an if解释为无声传递的错误吗?如果是这样,您是否通过以这种方式使用它来明确使其静音,从而使其正常运行? 我不是指只能以一种方式做事的情况;例如: try: import foo except ImportError: import baz



5
如何将traceback / sys.exc_info()值保存在变量中?
我想将错误的名称和追溯详细信息保存到变量中。这是我的尝试。 import sys try: try: print x except Exception, ex: raise NameError except Exception, er: print "0", sys.exc_info()[0] print "1", sys.exc_info()[1] print "2", sys.exc_info()[2] 输出: 0 <type 'exceptions.NameError'> 1 2 <traceback object at 0xbd5fc8> 所需输出: 0 NameError 1 2 Traceback (most recent call last): File "exception.py", line 6, in <module> …

6
“最终”是否总是在Python中执行?
对于Python中任何可能的try-finally块,是否保证finally将始终执行该块? 例如,假设我在一个except街区中返回: try: 1/0 except ZeroDivisionError: return finally: print("Does this code run?") 或者,也许我重新提出一个Exception: try: 1/0 except ZeroDivisionError: raise finally: print("What about this code?") 测试表明finally上述示例确实可以执行,但我想我还没有想到其他场景。 在任何情况下,某个finally块可能无法在Python中执行?


10
Spring Resttemplate异常处理
下面是代码片段;基本上,当错误代码不是200时,我正在尝试传播异常。 ResponseEntity<Object> response = restTemplate.exchange(url.toString().replace("{version}", version), HttpMethod.POST, entity, Object.class); if(response.getStatusCode().value()!= 200){ logger.debug("Encountered Error while Calling API"); throw new ApplicationException(); } 但是,如果来自服务器的响应为500,则会出现异常 org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 我真的需要在尝试中包装其余模板交换方法吗?那么代码的目的是什么?

5
如何获取在Python中捕获的异常的名称?
如何获得在Python中引发的异常的名称? 例如, try: foo = bar except Exception as exception: name_of_exception = ??? assert name_of_exception == 'NameError' print "Failed with exception [%s]" % name_of_exception 例如,我捕获了多个(或所有)异常,并想在错误消息中打印异常的名称。


16
Windows窗体应用程序中异常处理的最佳实践?
我目前正在编写第一个Windows Forms应用程序。我现在已经读了几本C#书,因此我对C#必须处理哪些语言功能进行了相对较好的理解。它们都是很理论的,因此我还没有想到如何在应用程序中将基本概念转换为良好的异常处理模型。 有人愿意分享关于这一主题的智慧吗?发布您遇到的像我这样的新手所犯的常见错误,以及关于处理异常的任何一般性建议,以使我的应用程序更加稳定和健壮。 我目前正在尝试解决的主要问题是: 我什么时候应该重新抛出异常? 我是否应该尝试使用某种集中式错误处理机制? 与抢先测试磁盘上是否存在文件之类的事物相比,处理可能引发的异常是否会对性能产生影响? 是否应将所有可执行代码包含在try-catch-finally块中? 在任何时候都可以接受一个空的catch块吗? 感谢所有意见!




12
Visual Studio 2015在未处理的异常上无法正常工作
Visual Studio以前有一个特定的复选框用于“在未处理的异常时中断”。在2015年,它已被删除(或移到了我找不到的地方)。因此,如果我未能提供用户级异常处理程序,那么现在转换后的项目将不再中断。我不想破坏所有“抛出的异常”,因为我处理特定的异常。只是在我无法提供特定处理程序的地方。 现在,我的代码只是退出当前过程,并在下一个调用堆栈位置继续执行,而不是良好。 有人知道如何在Visual Studio 2015中重新获得它吗?我昨天刚升级到社区版。

7
需要处理未捕获的异常并发送日志文件
更新:请参阅下面的“已接受”解决方案 当我的应用程序创建未处理的异常(而不是简单终止)时,我想首先给用户提供发送日志文件的机会。我意识到在遇到随机异常后进行更多工作是有风险的,但是,最糟糕的是,应用程序崩溃了,日志文件也没有发送出去。事实证明这比我预期的要棘手:) 有效的方法:(1)捕获未捕获的异常,(2)提取日志信息并写入文件。 尚无法解决的问题:(3)开始一项活动来发送电子邮件。最终,我将进行另一项活动来征求用户的许可。如果我的电子邮件活动正常进行,则不会给其他人带来麻烦。 问题的症结在于未处理的异常在我的Application类中被捕获。由于这不是活动,因此如何使用Intent.ACTION_SEND启动活动尚不清楚。也就是说,通常要启动一个活动,就调用startActivity并以onActivityResult继续。这些方法受“活动”支持,但不受“应用程序”支持。 有关如何执行此操作的任何建议? 以下是一些代码片段作为入门指南: public class MyApplication extends Application { defaultUncaughtHandler = Thread.getDefaultUncaughtExceptionHandler(); public void onCreate () { Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException (Thread thread, Throwable e) { handleUncaughtException (thread, e); } }); } private void handleUncaughtException (Thread thread, Throwable e) { String fullFileName …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.