zoukankan      html  css  js  c++  java
  • Java 空指针和异常

    到底什么是空指针?如何从根源上避免空指针?

    •   空:内存地址   
    •   指针:引用 
    •   异常:运行时

    出现空指针的几种情况: 

    第一种情况:调用了空对象的实例方法

    User user = null;

    user.print();

    第二种情况:访问了空对象的属性

    User user = null;

    System.out.print(user.name);

    第三种情况:当数组是一个空对象的时候,取它的长度

    User user = new User();

    System.out.print(user.address.length);

    第四种情况:null 当作Throwable的值

    CustomException exception = null;

    throw exception;

    第五种情况:方法的返回值为null,调用方法直接去使用

    User user = new User();

    System.out.print(user.readBook());

    如何避免出现空指针异常?

    • 使用之前一定要初始化,或者检查是否初始化
    • 尽量避免在函数中返回NULL,或给出详细的注释(良好的编程习惯)
    • 外部传值,除非有明确的说明(非NULL),否则,一定要即使判断
    • ......

    实际案例:

    1)直接打印的时候

    System.out.print(request.getParameter("username"));

    改为:

    if(request.getParameter("username")){ 

      System.out.print(request.getParameter("username"));

    }else{

      throw exception;

    }

    2)给对象重新赋值的时候又调用

    User user = new User();

    Tools tool = new Tools();

    user = tool.getUser();

    user.print();

    改为:

    user = tool.getUser() == null ? new User() : tool.getUser();

  • 相关阅读:
    快速幂 + 矩阵快速幂
    iOS 获取设备的 UDID,安装描述文件、证书
    自定义View 圆角的ImageView
    使用Glide设置view背景
    dp转px,sp转px
    Android注解约束参数为固定的某几个值
    SourceTree回滚远程仓库
    Android加载视频封面的两种方式
    Android Glide加载视频封面
    ios 关于如何在app里面设置版本更新功能
  • 原文地址:https://www.cnblogs.com/yhc-love-cl/p/13951537.html
Copyright © 2011-2022 走看看