Questions tagged «exception»

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

25
如何安全地创建嵌套目录?
检查文件目录是否存在的最优雅方法是什么,如果不存在,则使用Python创建目录?这是我尝试过的: import os file_path = "/my/directory/filename.txt" directory = os.path.dirname(file_path) try: os.stat(directory) except: os.mkdir(directory) f = file(filename) 不知何故,我想念os.path.exists(感谢魔芋,布莱尔和道格拉斯)。这就是我现在所拥有的: def ensure_dir(file_path): directory = os.path.dirname(file_path) if not os.path.exists(directory): os.makedirs(directory) 是否有“打开”标志,使它自动发生?

5
在一行中捕获多个异常(块除外)
我知道我可以做到: try: # do something that may fail except: # do this if ANYTHING goes wrong 我也可以这样做: try: # do something that may fail except IDontLikeYouException: # say please except YouAreTooShortException: # stand on a ladder 但是,如果我想在两个不同的异常中做同样的事情,那么我现在想到的最好的方法就是: try: # do something that may fail except IDontLikeYouException: # say please except …


28
一次捕获多个异常?
不建议简单地抓住System.Exception。相反,仅应捕获“已知”异常。 现在,这有时会导致不必要的重复代码,例如: try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; } 我想知道:有没有一种方法可以捕获两个异常并且只WebId = Guid.Empty调用一次电话? 给定的示例非常简单,因为它只是一个GUID。但是,请设想一下代码中多次修改对象的情况,如果其中一种操作以预期的方式失败,则您想“重置” object。但是,如果有意外的例外,我仍然想将其提高。

30
您如何断言在JUnit 4测试中抛出了某个异常?
如何惯用JUnit4来测试某些代码引发异常? 虽然我当然可以做这样的事情: @Test public void testFooThrowsIndexOutOfBoundsException() { boolean thrown = false; try { foo.doStuff(); } catch (IndexOutOfBoundsException e) { thrown = true; } assertTrue(thrown); } 我记得在这种情况下,有一个批注或一个Assert.xyz或不那么杂乱无章的JUnit东西。
1998 java  exception  junit  junit4  assert 

10
在现代Python中声明自定义异常的正确方法?
在现代Python中声明自定义异常类的正确方法是什么?我的主要目标是遵循其他异常类具有的任何标准,以便(例如)我捕获到异常中的任何工具都会打印出我包含在异常中的任何多余字符串。 “现代Python”是指可以在Python 2.5中运行但对于Python 2.6和Python 3. *是“正确”的方式。所谓“自定义”,是指一个Exception对象,该对象可以包含有关错误原因的其他数据:字符串,也可以是与该异常相关的其他任意对象。 我在Python 2.6.2中被以下弃用警告绊倒了: >>> class MyError(Exception): ... def __init__(self, message): ... self.message = message ... >>> MyError("foo") _sandbox.py:3: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 BaseException对于名为的属性有特殊含义似乎很疯狂message。我从PEP-352收集到,该属性确实在2.5中有特殊含义,因此他们想弃用该属性,所以我想现在禁止使用该名称了(并且一个人)。啊。 我也模糊地意识到它Exception具有一些不可思议的参数args,但是我从未知道如何使用它。我也不确定这是前进的正确方法。我在网上发现的很多讨论都表明他们正在尝试消除Python 3中的args。 更新:有两个答案建议覆盖__init__,和__str__/ __unicode__/ __repr__。好像要打字很多,有必要吗?






21
了解Java中的已检查异常与未检查异常
约书亚·布洛赫(Joshua Bloch)在《有效的Java》中说 将检查的异常用于可恢复的条件,将运行时异常用于编程错误(第二版中的项目58) 让我们看看我是否正确理解了这一点。 这是我对检查异常的理解: try{ String userInput = //read in user input Long id = Long.parseLong(userInput); }catch(NumberFormatException e){ id = 0; //recover the situation by setting the id to 0 } 1.以上是否被视为经过检查的异常? 2. RuntimeException是未经检查的异常吗? 这是我对未经检查的异常的理解: try{ File file = new File("my/file/path"); FileInputStream fis = new FileInputStream(file); }catch(FileNotFoundException e){ //3. …

10
我可以在同一catch子句中捕获多个Java异常吗?
在Java中,我想做这样的事情: try { ... } catch (/* code to catch IllegalArgumentException, SecurityException, IllegalAccessException, and NoSuchFieldException at the same time */) { someCode(); } ...代替: try { ... } catch (IllegalArgumentException e) { someCode(); } catch (SecurityException e) { someCode(); } catch (IllegalAccessException e) { someCode(); } catch (NoSuchFieldException e) { …


26
是否为空参数提供IllegalArgumentException或NullPointerException?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我有一个简单的属性设置方法,null不适用于此特定属性。在这种情况下,我一直很痛苦:我应该扔IllegalArgumentException还是NullPointerException?从javadocs来看,两者似乎都合适。有某种可以理解的标准吗?还是这只是您应该做的任何事情之一,而且两者都是正确的?

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.