标签: exception

如何在Python中安全地创建嵌套目录?

检查文件目录是否存在的最优雅方法是什么,如果不存在,使用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)
Run Code Online (Sandbox Code Playgroud)

不知何故,我错过了os.path.exists(感谢kanja,Blair和Douglas).这就是我现在拥有的:

def ensure_dir(file_path):
    directory = os.path.dirname(file_path)
    if not os.path.exists(directory):
        os.makedirs(directory)
Run Code Online (Sandbox Code Playgroud)

是否有"开放"的标志,这会自动发生?

python directory operating-system exception path

3909
推荐指数
28
解决办法
245万
查看次数

在一行中捕获多个异常(块除外)

我知道我能做到:

try:
    # do something that may fail
except:
    # do this if ANYTHING goes wrong
Run Code Online (Sandbox Code Playgroud)

我也可以这样做:

try:
    # do something that may fail
except IDontLikeYouException:
    # say please
except YouAreTooShortException:
    # stand on a ladder
Run Code Online (Sandbox Code Playgroud)

但如果我想在两个不同的例外中做同样的事情,我现在能想到的最好的就是这样做:

try:
    # do something that may fail
except IDontLikeYouException:
    # say please
except YouAreBeingMeanException:
    # say please
Run Code Online (Sandbox Code Playgroud)

有什么办法我可以做这样的事情(因为两个例外的行动都是say please):

try:
    # do something that may fail
except IDontLikeYouException, YouAreBeingMeanException:
    # say please
Run Code Online (Sandbox Code Playgroud)

现在这真的不起作用,因为它符合以下语法:

try:
    # do something that may fail
except …
Run Code Online (Sandbox Code Playgroud)

python exception-handling exception

2521
推荐指数
6
解决办法
72万
查看次数

在Python中手动引发(抛出)异常

如何在Python中引发异常以便以后可以通过except块捕获?

python exception

2079
推荐指数
7
解决办法
161万
查看次数

一次捕获多个异常?

不鼓励简单地抓住System.Exception.相反,只应捕获"已知"异常.

现在,这有时会导致不必要的重复代码,例如:

try
{
    WebId = new Guid(queryString["web"]);
}
catch (FormatException)
{
    WebId = Guid.Empty;
}
catch (OverflowException)
{
    WebId = Guid.Empty;
}
Run Code Online (Sandbox Code Playgroud)

我想知道:有没有办法捕获两个异常并且只WebId = Guid.Empty调用一次呼叫?

给出的例子相当简单,因为它只是一个GUID.但是想象一下你多次修改一个对象的代码,如果其中一个操作以预期的方式失败,你想要"重置"它object.但是,如果出现意外异常,我仍然希望将其提高.

.net c# exception-handling exception

2015
推荐指数
24
解决办法
52万
查看次数

你如何断言在JUnit 4测试中抛出某个异常?

如何以惯用方式使用JUnit4来测试某些代码是否会抛出异常?

虽然我当然可以这样做:

@Test
public void testFooThrowsIndexOutOfBoundsException() {
  boolean thrown = false;

  try {
    foo.doStuff();
  } catch (IndexOutOfBoundsException e) {
    thrown = true;
  }

  assertTrue(thrown);
}
Run Code Online (Sandbox Code Playgroud)

我记得有一个注释或一个Assert.xyz或者其他东西,对于这些类型的情况来说,远不如KUndgy 和JUnit的精神.

java junit assert exception junit4

1915
推荐指数
24
解决办法
120万
查看次数

处理"java.lang.OutOfMemoryError:PermGen space"错误

最近我在我的Web应用程序中遇到了这个错误:

java.lang.OutOfMemoryError:PermGen空间

这是在Tomcat 6和JDK 1.6上运行的典型Hibernate/JPA + IceFaces/JSF应用程序.显然,重新部署应用程序几次后就会发生这种情况.

导致它的原因以及可以采取哪些措施来避免它?我该如何解决这个问题?

memory-leaks exception out-of-memory permgen java-6

1215
推荐指数
17
解决办法
102万
查看次数

在现代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
Run Code Online (Sandbox Code Playgroud)

看起来很疯狂,BaseException对于名为的属性具有特殊含义message.我从PEP-352收集到该属性确实在2.5中有特殊含义他们试图弃用,所以我猜这个名字(而且仅此一个)现在被禁止了?啊.

我也模糊地意识到它Exception有一些神奇的参数args,但我从来不知道如何使用它.我也不确定这是向前发展的正确方法; 我在网上发现的很多讨论都表明他们试图在Python 3中废除args.

更新:两个答案建议覆盖__init__,和__str__/ __unicode__/ __repr__.这似乎很多打字,是否有必要?

python exception custom-exceptions

1176
推荐指数
11
解决办法
60万
查看次数

如何检查变量是否存在?

我想检查变量是否存在.现在我正在做这样的事情:

try:
   myVar
except NameError:
   # Do something.
Run Code Online (Sandbox Code Playgroud)

还有其他方法没有例外吗?

python variables exception

849
推荐指数
9
解决办法
91万
查看次数

如何正确忽略异常

如果您只是想尝试 - 除非不处理异常,您如何在Python中执行此操作?

以下是正确的方法吗?

try:
    shutil.rmtree(path)
except:
    pass
Run Code Online (Sandbox Code Playgroud)

python exception try-except

734
推荐指数
10
解决办法
98万
查看次数

你如何测试Python函数抛出异常?

如果一个函数没有抛出预期的异常,那么如何编写一个单元测试失败?

python unit-testing exception-handling exception

695
推荐指数
15
解决办法
37万
查看次数