本帖最后由 makeppy 于 2011-12-31 11:21:54 编辑

解决方案 »

  1.   

    有时检察输入的String类型变量str是否为合法输入时,使用判断:
    if( str!= null && !str.isEmpty() )
    而不能写成 if( !str.isEmpty() && str!= null )这样的话程序因为优先执行左边的判断语句,从而导致NullPointerException 的发生.
      

  2.   

    stracktrace一看马上就定位到了,原因一般也会一目了然,用得着讨论?
      

  3.   

    nullpointer是最好发现最好处理的java exception之一,可以说
      

  4.   

    我觉得等程序运行后才去发现那就有些晚了,应该是防患于未然,无论什么语言编写程序,程序员应该都应该对编程有的警觉性。java提供空指针异常抛出,但是如果c/c++。出现空指针也许程序崩溃不算什么,但是出现更严重的结果呢?为啥不事先做到尽量减小的损失,保证程序的尽量完美。
      

  5.   

    stracktrace只能定位方法,但是一个方法中如果调用了很多的内容的话,并不能明确的知道是哪一行出的问题的。如果这个异常是不容易重现的话,那这个问题就很难解决了。所有我觉得有讨论的必要。ps:多谢关注
      

  6.   

    多用一些3目表达式。例如 var==null?”“:var
      

  7.   

    null object 模式。DbCgoogle guava: com.google.common.base.Optional
      

  8.   

    空指针异常的出现,基本上不能怪别人,只能怪自己的编码形式有问题。建议:1:对于所有 public 方法传入的对象参数进行 null 值检查
    2:对于所有从数据库获取的对象进行 null 值检查
    3:对于所有从网络、IO 中获取的数据(对象)进行 null 值检查做到以上三点,空指针异常基本上会跟你说拜拜!
      

  9.   

    那个String的非空判断可以用apache的common-lang3中的StringUtils.isBlank()或者是isNotBlank()来判断。
      

  10.   

     最常见的NullException是这样产生的: myCup.getCoffee().drink(); //getCoffee() returns null
      

  11.   

    1:对于所有 public 方法传入的对象参数进行 null 值检查
    2:对于所有从数据库获取的对象进行 null 值检查
    3:对于所有从网络、IO 中获取的数据(对象)进行 null 值检查做到以上三点,空指针异常基本上会跟你说拜拜!但是很麻烦啊
      

  12.   

    list.add(1,Factory.add(fstu1,fstu2));返回空指针异常
    factory两构造方法如下
    public Factory(){}
    public Factory(int i){...}Factory.add()返回一个factory对象,fstu1,fstu2均是factory对象
    添加构造方法
    public Factory(Factory f){...}运行正常,如何解释
      

  13.   

    好像没有这么写的吧,先声明一个该对象的变量,再用add方法赋值吧
      

  14.   

      在很多情况下 我不尝试去避免NullPointerException
      因为我通常把NullPointerException当作逻辑错误 出现了就是程序逻辑有问题
      如果吞掉NullPointerException 而不做出任何反应的话 不利于寻找bug
      

  15.   

    搞android的表示,每次看见空指针,就会很开心因为空指针是最容易解决的问题或者说根本不是问题
      

  16.   


    if ("root".equals(userName)) 
    {....} 这样只是不报错吧,该空还得空,怎么避免?
      

  17.   

    if ("root".equals(userName)) 
    {....} 我觉得这样写还不如
    userName != null 然后在&& equals