使用try / catch防止应用崩溃
我一直在开发一个Android应用程序,该应用程序try/catch经常使用以防止它崩溃,即使在不需要的地方也是如此。例如, 在视图xml layout与id = toolbar被引用,如: // 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) { } 在整个应用程序中都使用这种方法。堆栈跟踪没有打印出来,很难找到问题所在。该应用程序突然关闭,而不打印任何堆栈跟踪。 我请我的长辈向我解释一下,他说: 这是为了防止生产崩溃。 我完全不同意。对我来说,这不是防止应用程序崩溃的方法。它表明开发人员不知道自己在做什么,并且对此表示怀疑。 这是行业中用来防止企业应用程序崩溃的方法吗? 如果try/catch确实是我们的真正需求,那么是否可以将异常处理程序与UI线程或其他线程连接,并在那里捕获所有内容?如果可能的话,那将是一个更好的方法。 是的,为空try/catch很不好,即使我们将堆栈跟踪或日志异常打印到服务器,try/catch对我来说,将代码块随机地包装在所有应用程序中也没有意义,例如,将每个函数都包含在try/catch。 更新 由于这个问题引起了广泛关注,并且有些人误解了这个问题(也许是因为我没有清楚地表述),所以我将其重新表述。 这是开发人员在这里所做的 一个函数是经过编写和测试的,它可以是一个仅初始化视图的小函数,也可以是一个复杂的函数,在测试后将其包裹在try/catch块中。即使对于永远不会抛出任何异常的函数。 在整个应用程序中都使用了这种做法。有时打印堆栈跟踪,有时只是打印debug log一些随机错误消息。此错误消息因开发人员而异。 通过这种方法,应用程序不会崩溃,但是应用程序的行为无法确定。即使在某个时候,也很难跟踪出了什么问题。 …