【问题标题】:Is null pointer exception cause to performance of the android app?空指针异常是否会导致 android 应用程序的性能?
【发布时间】:2018-10-09 11:49:28
【问题描述】:

我正在做一个 android 应用程序,在这个应用程序中,我通过本地数据库动态创建 UI 字段。在基于来自远程服务器的响应创建字段时,由于在 db 中找不到某些字段,我收到了一些空指针异常。但是,我使用 try catch 块来处理这些异常。这些异常是否会导致应用程序性能降低?如果,那么请给我任何其他方法来处理这个问题。

这是我的代码-

@Override
public void populateField() {


    String value = "";
    try {
        value += DBHelper.getInstance().getDataByID(mField.getId(), 
          refCode).getFieldValue();// **here getting exception**
     .
     ....  
    } catch (Exception e) {
        Logger.ex(e);
    } 

【问题讨论】:

  • 为什么不通过添加 Null-checks 来避免 NPE
  • 有时它也可能包含空白字符串
  • 所以?关键是有时它什么都不包含,这会导致问题,所以这就是你需要处理的场景

标签: java android performance try-catch


【解决方案1】:

使用 try/catch 的真正成本很大程度上取决于环境(主要是 JVM 实现)。例如,请参阅here

是的,显然,当您启动 catch 块时,将使用相当多的 CPU 周期来处理它。

但除此之外,Java 只是一种更喜欢 LBYL 而不是 EAPL 的语言(例如,参见 here)。意思是:你在你跳跃之前先看看,而不是要求外国而不是许可

这两件事结合告诉您避免不必要的 try/catch 块。换句话说:如果预期“值”为空,则添加代码以检查该值是否为空。使用if,而不是try/catch

【讨论】:

    【解决方案2】:

    如果您不打算在应用程序上使用(读取、恢复最终用户)日志,则应注意调用

     Logger.ex(e)
    

    根据该记录器的实现,它可能会将异常写入(或尝试写入)文件,这可能需要一些时间。

    【讨论】:

    • 感谢您的建议,但仅在调试模式下我正在打印错误日志。
    猜你喜欢
    • 2020-08-30
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多