精华帖 (0) :: 良好帖 (1) :: 新手帖 (5) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-20
也与编程习惯有关。
比如经常字符串比较值的时侯 object.equals("") 为了避免空指针异常可以写成为: "".equals(object) |
|
返回顶楼 | |
发表时间:2008-11-20
jeff.chuh 写道 你这样写的代码会很健壮,我现在也是尽量这么做的,但是大项目中往往控制不了别人怎么写代码。
这个是项目组的best practice.事实上在做类设计的时候,我们把每个方法抛什么Exception也写进去了(Javadoc)。coder必须得按设计写代码,要抛的Exception必须抛出来,不然任务就没完成。 |
|
返回顶楼 | |
发表时间:2008-11-20
datuo 写道 也与编程习惯有关。
比如经常字符串比较值的时侯 object.equals("") 为了避免空指针异常可以写成为: "".equals(object) 这个。。。 这个还用说? |
|
返回顶楼 | |
发表时间:2008-11-20
我只觉得如果jvm连NullpointerException都不放过的话, 实在会引起很多开发时候的麻烦。还是就这样好,至少简单。
|
|
返回顶楼 | |
发表时间:2008-11-21
在未来的JDK7版本中,增加新特性a..b两个点引用如果a是null则不抛出空指针异常
|
|
返回顶楼 | |
发表时间:2008-11-21
怎么会没有呢?耐心的把异常报告看完,肯定会看到自己程序部分的行号
|
|
返回顶楼 | |
发表时间:2008-11-21
建议用apache的类判断文本:
StringUtils.isEmpty(str); StringUtils.isNotEmpty(str); 利用Spring的Assert简化判断: Assert.notNull(classA); Assert.notNull(classB, "classB不能为空"); |
|
返回顶楼 | |
发表时间:2008-11-21
jeff.chuh 写道 javaeyebird 写道 为什么必须要单独给NullPointerException加上“调用XXX时”呢?其他的Exception不需要加么?
因为从stack trace中就能得到方法调用的信息 try { ... } catch (Exception e) { log.debug(e); // 或者简单地e.printStackTrace() } 只能得到某个方法执行到第几行的时候出现了NullPointerException, 而不知道那行代码究竟是什么,比如执行XX对象的XX方法这样的信息没有。 你是要得到运行时的某个xx对象么?怎么表示这个对象? Foo@2342342么?照样不知道这个对象是哪个。。。 如果是说变量名,那从stack trace里看对应行的代码,就能看到诸如 a.foo(...),这就知道是a变量存放的对象执行Foo方法 如果要得到详细的stack运行时信息,那得利用jvm的debug接口,这可以用于各个异常,不是专门针对NullPointerException |
|
返回顶楼 | |
发表时间:2008-11-21
支持lz,虽然我觉得问题没那么严重,如果出现很多NullPointerException的话,
那应该考虑增加参数的检查,一般参数都是跟业务有关的,应该返回跟业务相关的错误代码, 而不应该要求jvm帮你处理了,业务相关的东西还是手工写吧。 jvm给的出错信息的确很不足,遇到NullPointerException的话jvm肯定是知道要调用哪个类的哪个方法, 完全可以把这些信息打印出来的,这根本就不会有速度上的影响。 而且使用的那个变量,如果有变量名的话完全可以给出变量名的。 |
|
返回顶楼 | |
发表时间:2008-11-21
kaka2008 写道 datuo 写道 也与编程习惯有关。
比如经常字符串比较值的时侯 object.equals("") 为了避免空指针异常可以写成为: "".equals(object) 这个。。。 这个还用说? 不喜欢这种写法,当然,这纯属个人爱好。 原因是:表义不明 面向对象的程序就应该用对象的角度写代码, 我们要测试的对象是object不是"", 我宁愿写成object!=null && object.equals("") |
|
返回顶楼 | |