讨论下!抛异常好呢?还是判断后返回null值呢,

shaguaanfanga 2012-09-26 09:53:10

public String parseEmail(String email) {

String addbuf = email.substring(email.lastIndexOf("@")+1);
String add=addbuf.substring(0,addbuf.indexOf("."));
System.out.println(add);
String emailadd=Config.getString("/emai-ref.properties", add);
return emailadd;
}


当email为null值时以上代码会出现null指针一异常,这有时一个public的方法,我应该声明抛出异常呢,还是在代码中
判断是否为null值然后返回一个null值呢?
老鸟指示下好的做法
...全文
662 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaguaanfanga 2012-09-26
  • 打赏
  • 举报
回复
如果采用声明抛出异常的话:
该方法是struts框架下供给各个Action调用的service组件中的一个方法,用途是,用户输入一个邮件地址,(在浏览器会用js验证非空,)在Action中获取该邮件地址,传给service组件解析该邮箱该跳转到哪个页面登入邮箱,对于异常的处理是抛给struts框架处理,所以当用户跳过了js页面检查传入了一个null值,就会出现系统错误,这是用户输入不规范导致的,却报了系统错误,很不合理;
huntor 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

其实都可以,这要看你代码的用途了,而且应该在方法描述中说清楚。
如果该方法作为一个api供他人调用,你可以先定义一个接口如:public String parseEmail(String email) throw NullPointerException;然后说明异常抛出的条件。
如果该方法只是自己的工具类自己知道怎么调用就好了,怎么处理自己看着办
[/Quote]
NPE是一个RuntimeException不需要在方法签名里申明。
public String parseEmail(String email) throw InvalidEmailAddressException {...}
iGoodLoser 2012-09-26
  • 打赏
  • 举报
回复
其实都可以,这要看你代码的用途了,而且应该在方法描述中说清楚。
如果该方法作为一个api供他人调用,你可以先定义一个接口如:public String parseEmail(String email) throw NullPointerException;然后说明异常抛出的条件。
如果该方法只是自己的工具类自己知道怎么调用就好了,怎么处理自己看着办
huntor 2012-09-26
  • 打赏
  • 举报
回复
在javadoc注释里要求传入的参数非空,是一个合式的电邮地址。
其他不必理会,让方法的调用者保证传入参数的正确性。
Inhibitory 2012-09-26
  • 打赏
  • 举报
回复
如果一个函数的错误不只有一种,可能有10种,那么只返回一个null显然不能说明问题。
1. 抛出异常,每种错误对应一种异常
2. 返回一个错误代码,每种错误对应一个错误代码。没有异常支持的系统经常这样做。
这个错误代码的描述,可以定义在一个统一的文件里,然后使用某个函数专门读取这个错误代码对应的错误描述。
mazq1983 2012-09-26
  • 打赏
  • 举报
回复
我觉得还是加try catch 抛异常好些

本身你的方法写的就会有异常,不只是空指针异常,还有越界异常等
  • 打赏
  • 举报
回复
trycatch
小豆芽的爱恋 2012-09-26
  • 打赏
  • 举报
回复
楼上说的对极了

zxhcloth 2012-09-26
  • 打赏
  • 举报
回复
如果你要作为封装使用,建议你抛异常
如果你只是被使用的的一个基本方法,返回个null就可以了,让调用者去判断。

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧