在Check parameters for validity的时候。我们可以用断言(Assertion)的方式,抛出异常的方式等。
对于以下一个程序段,假设输入参数必须小于0,返回值是一个String(具体产生方法是根据内部的逻辑)。
方法1:
public String myMethod(int a){
String str;
if (a>=0)
throw new IllegalArgumentException();
...//do the String generation logic
return str;
}
然后在调用函数中捕获IllegalArgumentException并进行相应处理。
方法2:
public String myMethod(int a){
String str;
if(a>=0)
return null;
else{
...//do the String generation logic
return str;
}
}
然后再调用函数中判别返回值是否为null。
以上两种方法哪一种更为合理呢?
另外抛出异常是不是对于public method的参数进行validity check的最常用的方法呢?
对于以下一个程序段,假设输入参数必须小于0,返回值是一个String(具体产生方法是根据内部的逻辑)。
方法1:
public String myMethod(int a){
String str;
if (a>=0)
throw new IllegalArgumentException();
...//do the String generation logic
return str;
}
然后在调用函数中捕获IllegalArgumentException并进行相应处理。
方法2:
public String myMethod(int a){
String str;
if(a>=0)
return null;
else{
...//do the String generation logic
return str;
}
}
然后再调用函数中判别返回值是否为null。
以上两种方法哪一种更为合理呢?
另外抛出异常是不是对于public method的参数进行validity check的最常用的方法呢?
解决方案 »
- 关于数组的输出显示(for循环和toString)寻求帮助?
- 晕了,问题越弄越多了?java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
- 如何获得Java运行时类的信息
- 关于prepareStatement的setString问题!请高手指教
- JAVA取得INFORMIX存储过程的返回值?
- 如何用Java实现打印功能?
- java中的String类的问题
- socket传输图片的小练习,有点小错误大神帮忙看下。。
- 咨询!java和Orcale 的认证考试!
- 昨天面试题选~~
- 人工智能作业--如何转动使得每个扇区数字和为12
- 我提一个关于擦除的简单问题。
return null; 当然是这种,第一种异常很耗资源的。还是用返回值判断处理结果更合理!
LZ根据返回值再处理的时候 是老样子抛异常 还是做些其他的处理呢
如果是照样抛异常 那就没多少差别吧 第二问
个人感觉 不常用
如果 LZ想实现 处理 用户输入无效的情况
最好是显式表达一些友好提示 比一大堆异常术语好多了
至于工程上的有效性测试 不太清楚
if(l instanceof 中文)
return l;
if(l instanceof 英文)
return new 中文(英文);
....
throw new 无法识别的语言(l);
}//调用
public 火星语 implements 语言语言 结果 = 翻译(new 火星语());个人认为应该这样的.如果单纯的返回一个null之类的说明你的这个方法可以针对参数进行处理.
当然,如果方法的业务逻辑允许,斑竹大大的方法的开销还是比较小的.
异常也可以在那个do something中出哦!只有看你怎么区分了!可以采用全球资源符号!保你没相同情况!
['{33B61845-3434-4E5C-9417-DAF973ED76AE}']类似这个!