java , 使用try catch return 还是if return 来退出程序

我从web端传到后台几个参数a,b,c然后需要进行转换。既然是转换,那就有可能出现异常。比如:我需要Integer.parseInt(a);Double.parseDou... 我从web端传到后台几个参数 a,b,c 然后需要进行转换。既然是转换,那就有可能出现异常。
比如 : 我需要 Integer.parseInt(a); Double.parseDouble(b); c.toString;
我想到两种方式来处理异常:

采用正则先校验一遍,即:
if(!Int正则校验a){提示不能转换Int; return;}
if(!Double正则校验a){提示不能转换成Double; return;}
if(c==null){提示null不能ToString;return}
采用try catch
try {
Integer.parseInt(a); Double.parseDouble(b); c.toString;
}catch(Exception e){
提示输入有误;
return;
}
或者具体点:
try{
Integer.parseInt(a); Double.parseDouble(b); c.toString;
}catch(NumberFormatException){
提示错误;
return;
}catch(NullPointorException){
提示字符串错误;
return;
}

问题:
单个try catch 和单个if比较 肯定if效率高,但是使用if会导致每次必然回去判断一下 综合考虑,当参数数量达到10个20个...的时候,怎么分析效率问题(是根据出错的概率吗)
效率和代码简洁可读,怎么权衡。我可以用最高层的Exception 来进行一次捕获或者写10个if return.
关于效率问题,我觉得 1ms和10ms的差距虽然是10倍,但是从用户使用角度考虑,差距应该是不大的,但我在网上搜了好久,都说使用if 预先判断,到底是基于什么考虑的?
展开
 我来答
261667318
2014-09-04 · TA获得超过898个赞
知道小有建树答主
回答量:680
采纳率:100%
帮助的人:640万
展开全部
计算机执行的速度很快的,对用户而言没什么区别。我觉得try catch走的路线和if走的路线都是一样的,都是一旦异常就return了。基于if的校验用的多我估计是复杂场景的判断, 比如判断这个字符串是否是电话号码。 这样的场景你用try catch的话,里面还是要写if,是吧?

基于简单的类型转换,我觉得用try catch就可以了。如果你觉得这么多个return影响阅读的话,可以这么写:
String result = "OK";
try{
Integer.parseInt(a); Double.parseDouble(b); c.toString;

}catch(NumberFormatException e){
result = "number format error";
}catch(NullPointorException){
result = "param is null";
}

if(!"OK".equals(result)){
return;//这里统一return

}
白衬衫啊啊
2014-09-04 · TA获得超过101个赞
知道答主
回答量:89
采纳率:0%
帮助的人:39.1万
展开全部
对比最好的方法就是尝试将测试的数据量加大,显然如果加大的话是if效率高,因为比方10W个参数传进来你用try,catch的话每次都去父类查找然后才抛出异常,这样的话效率就会非常低,因为他引用了对象,但是if判断就不会,因为他并未引用任何对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
山上的阿竹
2014-09-04 · TA获得超过463个赞
知道小有建树答主
回答量:513
采纳率:87%
帮助的人:136万
展开全部
如果能判断的还是先判断好的
毕竟抛出异常不如判断效率高。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式