火大了,都不知道怎么改。。有谁来说说经验么

解决方案 »

  1.   

    比较字符串时,用 "中文".equals(str) , 而不用 str.equlas("中文"),可以避免因str忘赋初值而导致的空指针。楼下还有什么好的建议的,提出来哦
      

  2.   

    我是在JSP里,有时候数据库没数据报错倒还好些,可是有时候突然给你来个空指针错误,一点头绪都没有,哎,看来还是自己经验不够
      

  3.   

    public方法,要对入参进行有效性判断。方法尽量不要返回null,对String,可以返回""(空字符串),对于数组可以返回一个长度为0的数组。
      

  4.   

    空指针异常大多数都是由不好的编码习惯所造成的!public boolean hasAdminRole(String username) {
        一堆操作
        return true/false;
    }如果改成:public boolean hasAdminRole(String username) {
        if(StringUtil.isBlank(username)) {
            return false;
        }
        一堆操作
        return true/false;
    }
    public class StringUtil {
        public boolean isBlank(String str) {
            return (str == null) || (str.trim().length == 0);
        }
    }这样的话,就不会产生空指针异常。总之凡不是常量值都必须检查参数的有效性和非空性。
      

  5.   

    debug到抛异常的那句话,看那句话涉及到几个对象,看哪个对象是null的。
      

  6.   

    大家继续发言啊,来者有分,不够我再追加好了。
    昨天又碰上空指针了,原因是JSP跳转的时候用了request.sendRedirect(),而不是request.getRequestDispatcher()导致对象不能传给下个页面,就报了空指针。。
    这种东西,感觉除了自己细心,多做判断,经验也十分重要啊,就像我这个例子,即使你找到了空指针,但是不知道是什么原因导致的话,改起来挺麻烦的。
      

  7.   

    空指针不能随意规避,要分析一下具体问题,究竟这个变量在这个地方能不能为空??
    如果不加区分把所有变量都判空,那么就会隐藏错误,导致程序bug
      

  8.   

    我觉得空指针很容易解决的 像下面的报错  我知道 那个文件是我写过的 并且 提示我ChangeTreeHandler.java:78错误发生在78行  直接按Ctrl就转到错误点了。然后看下代码你就知道那个暴的空指针了Stack:
    java.lang.NullPointerException
    at com.res.vms.handlers.ChangeTreeHandler.prepareDisplay(ChangeTreeHandler.java:78)
    at com.res.vms.handlers.ChangeTreeHandler.process(ChangeTreeHandler.java:159)
    at com.res.framework.handler.OnlineHandler.handleRequest(Unknown Source)
      

  9.   

    以后你还会见很多异常, null与它们相比,毛毛雨啦到时候你就会像我一样希望出的是null异常
      

  10.   

    我只知道空指针就是在一个null值的变量使用.xxx的操作.就看哪个变量为null,然后再去找原因.String s = request.getParameter("cc");
    if(s.equals("010"))
    {}
    如果那里出现了空指针,我就知道是
    request.getParameter("cc");这里没有取到值,也就是说没有这个参数,然后再找上一步,为什么没有带这个参数,是不是写错了?或者是不是少了一个&连接符的.
      

  11.   

    根本原因是,基础没学扎实就上高级的了。NullPointerException,异常信息里会有很清晰的说明,循着异常路径一步一步分析,很容易找到问题所在。
      

  12.   

    使用变量前判断不为空就好了,为空就转到出错界面或给出出错提示,有时不一定所有的null都要转成""的,这样很容易隐藏bug的,为null时,要查找到底是程序问题还是业务问题等等,然后就可以针对性的解决问题的了
      

  13.   

    一般用字符串的时候都在字符串变量的外面套一层方法
    public format(String str){
    if(str==null) return "";
    else return str.trim();
    }
    方法里面的东西可以自己随意界定,小日本的项目都是这么做的
      

  14.   

    public String formatStr(String str){ 
    if(str==null) return ""; 
    else return str.trim(); 

    即可
      

  15.   

     空指向异常是很普遍的啊,但解决起来也不是很难啊。主要是找到报错的地方,把报错的语句中对象找出来,一个个排除看是那个对象是空啊
       一些小的细节 如 "".equals(name) 或者 null == name 这样写也可避免报空指向啊
      

  16.   

    就是甭管什么对象,还是null的时候你就用了,把它搞成不是null就好了呗。同意20楼的说法,盲写一大坨程序,难免出现走神忘加判断的地方,程序抛异常的时候,我更喜欢捕获到空指针异常,看到它反倒比程序很顺利的进行下去让我踏实很多。
      

  17.   

    如果是一个List的话,那就先判断是否为null,在判断size是否为0
    if(list !=null && list。size != 0)if(list ==null || list。size == 0)
      

  18.   

    是有个过程的,不是一开始就能避免NullPointerExcpetion的. 抛出空指针异常是因为你对一些null的引用做了一些操作,当遇到空指针异常的首先看他的堆栈信息..找到出错的地方改进下就好了,时间长了自然会知道该怎么注意这个问题了.
    或者实在不放心的话还是在使用之前先判断下是否为null
      

  19.   

    每做一个小功能就测试一个
    出错的时候就会最小化的将错误定位到一个小功能
    null指针一般都是传递数据时没处理好
    没什么方法,仔细找
      

  20.   

    获取对象的时候,若对象没获取到,而又调用对象的相关方法会出现这种现象!如用get..获取对象的属性的时候
      

  21.   

    变量定义的时候就加上初始化,
    程序逻辑判断中比如引用进来的参数等加以是否null的判断。。
    出现null指针错误的时候,根据错误信息回溯到错误代码中的第几行。。很方便的。。
      

  22.   

    空指针异常继承了RuntimeException,是运行时异常,他属于运行时对不存在的对象发送消息而抛出的异常,属于编程人员应该要解决的错,负责的错。
    java的运行时异常通常是告诉程序员:程序不够健壮,需要改进!
    几个容易出空指针异常的地方:
    1.从各类容器中取数据的时候
    2.从诸如session、request中取参数或属性的时候
    ....等等等等
    总之,所有不一定能保证初始化或是有的地方,都要加判断。
      

  23.   

    相比其他错误,空指针还是好解决一些,一般都是哪个变量没有值,然后调用其方法而报空指针的
    如:List list=getList()//用list来接收业务方法的返回值,如果返回值为null的话,
    此时用list.size()或者list.get(0)就会报空指针了!
      

  24.   

    可能发生空指针异常的情况①数据转换的时候,比如String转int、long、或者String、int、long转BigDecimal等
    Integer.parseInt(String str)
    Long.parseLong(String str)
    new BigDecimal(String str)......
    在用这些方法前,一定要确定被转换的String对象str有没有是null或""的可能,有的话要处理
    ②对象强制转换的时候,要考虑对象有没有null的可能
    ③执行对象的方法的时候,如果对象为null
    如: 
    List list=null;
    ......--中间一定要有对实例化或进行引用的代码
    int size=list.size();--如果list=null,肯定会抛空指针异常又:
    obj.equals("YES"),一定要确定obj不为null,否则抛空指针异常
    可以这样写    :"YES".equals(obj),这样是调用对象"YES"的equals方法
    暂时想到这么多
      

  25.   

    这是个长见的问题!
       返回值不要设为 void 类型!
      

  26.   

    返回值不要设为 void 类型!
    常见  更正一下,呵呵!
      

  27.   

    相对别的异常,我觉得NullPointerException最好处理,因为这个异常说明的问题很简单, 就是有对象是空的而你却使用了他的方法或访问了他的属性,然后就看为什么它是空的,问题就很明显了。万一跑出个其他的Exception, 尤其是用户自定义的,或者第三方软件自定义的Exception, 真的购你折腾。
      

  28.   

    我是先通过判断长度或者先trim后再判断其长度来确定的
      

  29.   

    对传进来的参数注意做些判断,我想应该出现空指针的情况应该会减少!
    还一个就是我看了楼主都是jsp页面的,你要注意数据传参,如你用page存数据到其他页面去取的话那肯定会出现空指针,这些提示希望对楼主你有用
      

  30.   

    注意不要是NULL 就可以了 
      

  31.   

    我遇到的最多的空指针是对象没有new,要么是加载图片或者文件的时候路径错了...其他很少了.
      

  32.   

    Spring 注入时配置要对,命名要对...
    getParameter的命名问题.
    使用对象前注意先看new了没.
    细心细心...
    对象为空的话我先Syso看看
      

  33.   

    Java中的空指针算的上是所有的我遇到的死Bug中比较容易解决的一种..
    遇到问题后查看堆栈信心就知道是哪里出错了啊.. 再认真仔细的分析下该是很容易搞定!!!!
      

  34.   

    学习啊,小弟刚学JAVA,还请各位大虾多指教。
      

  35.   

    在调用一个对象的.XX方法之前,要先想一下这个对象会不会是null,
    是的话,不会你执行.XX方法,都会报空指针,而且这种和往方法传参传null
    是经常由于疏忽导致的最多的。
      

  36.   

    难吗..java已经做了很好的包装了..
    我感觉比用C的指针幸福多了.
      

  37.   

    nullpointException 都是针对对象的,所以你在使用对象的方法的之前最好都要判断一下是否为空
      

  38.   

    嗯,同意楼上的说法。我是学Java的新手,对于这空指针异常也是很烦恼,不管自己怎样小心还是会出现。我通常是用System.out.println();将错误提示里的那个对象输出来看看。你也可以试试看的。如果你有更好的办法也可分享一下的,大家互相学习学习。