相关疑难解决方法(0)

为什么捕获Throwables时会捕获Java中的异常?

我们最近遇到了一个Java服务器应用程序的问题,其中应用程序抛出了未捕获的错误,因为Error是Throwable的一个单独的子类,我们只捕获异常.

我们通过捕获Throwables而不是Exceptions解决了当前的问题,但是这让我想到为什么你想要捕获Exceptions而不是Throwables,因为你会错过错误.

所以,当你能捕获Throwables时,你为什么要捕捉异常呢?

java

64
推荐指数
5
解决办法
2万
查看次数

Python中的双进度条

有没有办法在Python中创建双进度条?我想在彼此内部运行两个循环.对于每个循环,我想要一个进度条.我的程序看起来像:

import time
for i1 in range(5):
    for i2 in range(300):
        # do something, e.g. sleep
        time.sleep(0.01)
        # update upper progress bar
    # update lower progress bar
Run Code Online (Sandbox Code Playgroud)

中间某处的输出应该看起来像

50%|############################                                  |ETA: 0:00:02
80%|##################################################            |ETA: 0:00:04
Run Code Online (Sandbox Code Playgroud)

已经存在的非常酷的进度条模块似乎不支持这一点.

python progress-bar

20
推荐指数
9
解决办法
1万
查看次数

捕获.NET中的异常类

我一直听到这个

catch (Exception ex)
Run Code Online (Sandbox Code Playgroud)

然而,不好的做法是,我经常在事件处理程序中使用它,例如,操作可能会进入网络,从而可能出现许多不同类型的故障.在这种情况下,我捕获所有异常并在消息框中向用户显示错误消息.

这被认为是不好的做法吗?除了异常之外我无能为力:我不希望它停止应用程序,用户需要知道发生了什么,而且我处于代码的顶层.我还应该做什么?

编辑:

人们说我应该查看调用堆栈并专门处理错误,因为例如StackOverflow异常无法有意义地处理.然而,停止这个过程是最糟糕的结果,我想不惜一切代价阻止这一过程.如果我无法处理StackOverflow,那么就是这样 - 结果将不会比没有捕获异常更糟糕,并且在99%的情况下,就我而言,通知用户是最不好的选择.

此外,尽管我尽最大努力解决可能引发的所有可能异常,但在大型代码库中,我可能会错过一些.对于他们中的大多数人来说,最好的防御仍然是告知用户.

c# exception

19
推荐指数
5
解决办法
7198
查看次数

何时使用多捕获以及何时使用重新抛出?

我对这两个主题非常不确定.我知道我应该使用multi-catch来处理需要以相同方式处理的异常.但出于什么目的,我真的需要这样的东西.

private void something(String name) throws IOException, RemoteException {
    try {
        ...
    } catch (Exception ex) {

        ... // do something

        throw ex;
    }
}
Run Code Online (Sandbox Code Playgroud)

java rethrow multi-catch

5
推荐指数
1
解决办法
259
查看次数

在Android上只捕获ENOSPC

这可能是一个基本问题,但我找不到答案.如果你想在Android中只捕获FileNotFound,那么你就写了

        } catch (FileNotFoundException e)  {
Run Code Online (Sandbox Code Playgroud)

但是如果你想要准确地捕获ENOSPC(设备上没有空间)错误,你会怎么写?我不能使用"catch(Exception e)"因为我想明确处理这一个错误.

error-handling android

2
推荐指数
1
解决办法
541
查看次数

给出(一个)带有'catch(Exception)'子句的不良事件的例子

这是对此问题的后续问题.

人们普遍认为,做一个广泛的'捕获(例外)'是一个坏主意.

推理通常类似于"你必须正确处理异常"和"抓住你能处理的东西"和其他一些通用的声音参数.

那些通用的答案听起来很合理,但它们并不能让我满意.

让我具体一点.这是典型的代码,它应该是"坏的".

try {
   ... do something...
} catch (Exception e) {
   log(e); //leave a trace for debugging
   return ...a value the context can deal with...
}
Run Code Online (Sandbox Code Playgroud)

一个怀疑的头脑仍然不相信不处理异常(这可能会炸毁整个程序),必然比以这种通用方式处理它更好.

所以我真的想要一些特定的,令人信服的例子,带有代码片段,实际上发生了一些不好的事情,因为一个像上面那样过于宽泛的catch子句.

PS:人们可以用Java以外的其他语言来思考这个问题,但是由于我想要特定的例子,这实际上是关于Java程序和JRE可能引发的特定异常.

PS2:我特别感兴趣的是Exception的例子,它实际上是java.lang.Exception的子类型,而不是更广泛的'Throwable'.因此,排除像'OutOfMemoryError'这样的东西作为有效的例子.

java exception-handling

1
推荐指数
1
解决办法
280
查看次数