Tag: try catch

使用try / catch来防止应用程序崩溃

我一直在研究一个经常使用try/catch的Android应用程序,以防止在没有需要的地方崩溃。 例如, 带有id = toolbar xml layout的视图被引用如下: // see new example below, this one is just confusing // it seems like I am asking about empty try/catch try { View view = findViewById(R.id.toolbar); } catch(Exception e) { } 这个方法在整个应用程序中使用。 堆栈跟踪没有打印,真的很难find出了什么问题。 应用程序突然closures,不打印任何堆栈跟踪。 我问我的前辈向我解释,他说, 这是为了防止生产中的崩溃。 我完全不同意 。 对我来说,这不是防止应用程序崩溃的方法。 这表明开发人员不知道他/她在做什么,并且有疑问。 这是在业界用来防止企业应用崩溃的方法吗? 如果try/catch是真的,那么我们真的需要使用UI线程或其他线程来附加一个exception处理程序,并抓住所有东西? 如果可能的话,这将是一个更好的方法。 是的,空try/catch是不好的,即使我们打印堆栈跟踪或日志exception到服务器,在try/catch随机地包装代码块对所有的应用程序是没有意义的,例如,当每个函数被封闭try/catch 。 UPDATE 由于这个问题引起了很多的关注,有些人误解了这个问题(也许是因为我没有清楚expression出来),我将会重新解释这个问题。 这里是开发人员在这里做的 […]

使用python“with”语句和try-except块

这是正确的方式来使用python“with”语句结合try-except块吗? try: with open("file", "r") as f: line = f.readline() except IOError: <whatever> 如果是这样,那么考虑旧的做事方式: try: f = open("file", "r") line = f.readline() except IOError: <whatever> finally: f.close() 这里的“with”语句的主要好处是我们可以摆脱三行代码? 这个用例对我来说似乎并不令人信服(尽pipe我明白“with”语句有其他用途)。 编辑:上述两个代码块的function是否相同? 编辑2:前几个答案一般谈到使用“与”的好处,但在这里似乎边际利益。 我们已经(或应该已经)明确地调用f.close()多年了。 我想一个好处是,马虎编码器将受益于使用“与”。

如何捕获fs.readFileSync()没有文件?

在node.js中readFile()显示如何捕获一个错误,但是对于error handling的readFileSync()函数没有评论。 因此,如果我尝试使用readFileSync()时没有文件,我得到错误Error: ENOENT, no such file or directory 。 如何捕获抛出的exception? doco没有说明抛出了什么exception,所以我不知道我需要捕捉什么exception。 我应该注意到,我不喜欢通用的“捕捉每一个可能的exception”风格的try / catch语句。 在这种情况下,我希望捕获文件不存在时发生的特定exception,并尝试执行readFileSync。 请注意,我只在启动连接尝试前执行同步function,所以我不应该使用同步function的评论是不需要的:-)

如何捕捉整数(0)?

比方说,我们有一个产生integer(0)的语句,例如 a <- which(1:3 == 5) 捕捉这个最安全的方法是什么?

如何捕获由死锁引起的SqlException?

从.NET 3.5 / C#应用程序,我想赶上SqlException但只有当它是由 SQL Server 2008实例上的死锁引起的 。 典型的错误消息是Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. 但是,这个exception似乎没有logging在错误代码中。 […]

有一个返回语句只是为了满足语法不好的做法?

考虑下面的代码: public Object getClone(Cloneable a) throws TotallyFooException { if (a == null) { throw new TotallyFooException(); } else { try { return a.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } //cant be reached, in for syntax return null; } return null; 是必要的,因为一个exception可能被捕获,但是在这种情况下,因为我们已经检查过它是否为空(假设我们知道我们调用的类支持克隆),所以我们知道try语句永远不会失败。 为了满足语法和避免编译错误(有一个解释它不会被达成的注释),还是有更好的方法来编写类似这样的代码是不好的做法,返回语句是不必要的?

C#中try / catch的真正开销是多less?

所以,我知道try / catch确实增加了一些开销,因此不是一个控制stream程的好方法,但是这个开销是从哪里来的?它的实际影响是什么?

在Java中可能在同一个catch块中捕获两个exception吗?

我需要捕捉两个exception,因为它们需要相同的处理逻辑。 我想做一些事情: catch (Exception e, ExtendsRuntimeException re) { // common logic to handle both exceptions } 是否有可能避免重复每个catch块中的处理程序代码?

抛出exception终于块

有没有一个优雅的方式来处理finally拦截的exception? 例如: try { // Use the resource. } catch( Exception ex ) { // Problem with the resource. } finally { try{ resource.close(); } catch( Exception ex ) { // Could not close the resource? } } 你如何避免finally块中的try / catch ?

在c ++中,exception是如何工作的(在幕后)

我一直看到人们说exception缓慢,但我从来没有看到任何证据。 因此,我不会问是否会出现exception情况,所以我可以决定何时使用它们,以及是否缓慢。 从我所知,exception与做一堆回报是一回事,但是它也会检查何时需要停止回报。 如何检查何时停止? 我正在猜测,并说有一个第二个堆栈,其中包含exception和堆栈位置的types,然后返回,直到它到达那里。 我也猜测,唯一一次触摸就是掷出和每一次尝试/抓住。 AFAICT实现与返回代码类似的行为将花费相同的时间量。 但是这都是猜测,所以我想知道。 exception是如何工作的?