标签: exception-handling

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

我知道我能做到:

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万
查看次数

一次捕获多个异常?

不鼓励简单地抓住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万
查看次数

为什么在Ruby中"拯救Exception => e`是不好的风格?

Ryan Davis的Ruby QuickRef说(没有解释):

不要救援Exception.EVER.或者我会刺伤你

为什么不?什么是正确的做法?

ruby exception-handling

876
推荐指数
6
解决办法
28万
查看次数

Node.js最佳实践异常处理

我几天前刚开始尝试node.js.我已经意识到只要我的程序中有未处理的异常,Node就会终止.这与我所暴露的普通服务器容器不同,只有当未处理的异常发生且容器仍然能够接收请求时,工作线程才会死亡.这引出了一些问题:

  • process.on('uncaughtException')防范它的唯一有效方法吗?
  • process.on('uncaughtException')在异步进程执行期间是否会捕获未处理的异常?
  • 是否有一个已经构建的模块(例如发送电子邮件或写入文件),在未捕获的异常情况下我可以利用它?

我将非常感谢任何指针/文章,它将向我展示在node.js中处理未捕获的异常的常见最佳实践

exception-handling serverside-javascript node.js

736
推荐指数
5
解决办法
44万
查看次数

如何在不停止程序的情况下打印完整的回溯?

我正在编写一个程序来解析10个网站,查找数据文件,保存文件,然后解析它们以生成可以在NumPy库中使用的数据.有的错误该文件通过遇到不良链接,不好的XML,缺项,其他的事情我还没有进行分类.我最初制作这个程序来处理这样的错误:

try:
    do_stuff()
except:
    pass
Run Code Online (Sandbox Code Playgroud)

但现在我想记录错误:

try:
    do_stuff()
except Exception, err:
    print Exception, err
Run Code Online (Sandbox Code Playgroud)

请注意,这是打印到日志文件以供以后查看.这通常会打印非常无用的数据.我想要的是打印错误触发时打印的完全相同的行,没有try-except拦截异常,但我不希望它暂停我的程序,因为它嵌套在一系列for循环中,我想看完成了.

python exception-handling

696
推荐指数
15
解决办法
61万
查看次数

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

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

python unit-testing exception-handling exception

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

关于捕获任何异常

如何编写捕获所有异常的try/ exceptblock?

python exception-handling

635
推荐指数
10
解决办法
56万
查看次数

无法捕获的ChuckNorrisException

是否有可能在Java中构建一个代码片段,使得假设无法java.lang.ChuckNorrisException捕获?

想到的想法是使用例如拦截器或面向方面的编程.

java aop exception-handling exception

588
推荐指数
13
解决办法
3万
查看次数

Python try-else

声明的可选else条款的用途是try什么?

python exception-handling

532
推荐指数
11
解决办法
29万
查看次数

为什么在C#中捕获并重新抛出异常?

我正在查看文章C# - 可序列化DTO上的数据传输对象.

这篇文章包括这段代码:

public static string SerializeDTO(DTO dto) {
    try {
        XmlSerializer xmlSer = new XmlSerializer(dto.GetType());
        StringWriter sWriter = new StringWriter();
        xmlSer.Serialize(sWriter, dto);
        return sWriter.ToString();
    }
    catch(Exception ex) {
        throw ex;
    }
}
Run Code Online (Sandbox Code Playgroud)

本文的其余部分看起来很合理(对于菜鸟),但是try-catch-throw会抛出一个WtfException ... 这不完全等同于根本不处理异常吗?

人机工程学:

public static string SerializeDTO(DTO dto) {
    XmlSerializer xmlSer = new XmlSerializer(dto.GetType());
    StringWriter sWriter = new StringWriter();
    xmlSer.Serialize(sWriter, dto);
    return sWriter.ToString();
}
Run Code Online (Sandbox Code Playgroud)

或者我错过了C#中错误处理的基本内容?它与Java几乎相同(减去已检查的异常),不是吗?......也就是说,他们都改进了C++.

Stack Overflow问题重新抛出无参数捕获和不执行任何操作之间的区别?似乎支持我的观点,即try-catch-throw是一个无操作.


编辑:

只是为了总结未来发现这个主题的人...

不要

try {
    // Do stuff that might throw an …
Run Code Online (Sandbox Code Playgroud)

c# exception-handling try-catch

528
推荐指数
9
解决办法
21万
查看次数