我正在进行一些验证。有一些必填字段,其中一些是可选的。对于必填字段,我会抛出异常,但对于可选字段,我打印警告并且必须继续进行我的方法。我没有办法做警告部分。有人可以提供帮助吗?
public void method(String param1, String param2){
if(param1 == null){
throw new IllegalArgumentException("mandatory field");
}
//Here for param2, I want to throw eception, but want to proceed further to next line.
//Execute my code here
}
答案 0 :(得分:0)
throw是一个关键字,它通过抛出异常来完成你不能继续的方法执行,你可以使用一个接口来做你想做的事情
public void method(String param1, String param2,Listener listener){
if(param1 == null){
listener.IllegalArgumentException("mandatory field");
return;
}
listener.IllegalArgumentException("mandatory field");
//Execute my code here
}
interface Listener{
void IllegalArgumentException(String string);
}
答案 1 :(得分:0)
您可以使用
try{
} catch (Exception e){
// you can ignore if you want to
}finally {
//rest of your code here
}
答案 2 :(得分:0)
尝试下面的代码让我知道是否有任何问题。
public void method(String param1, String param2){
if(param1 == null){
throw new IllegalArgumentException("mandatory field");
}
if(param2 == null) {
Log.d("Error", "param2 is null");
}
}
答案 3 :(得分:0)
这不是例外工作的方式。有几种方法可以解决它:
不要使用异常并打印错误(println()或某些文本字段,吐司或其他)
放置一个布尔标记,表示param2失败并在方法结束时抛出异常
m_param2 = true
//...
if (param2 == null) {
m_param2 = false
}
// you proceed here
if (!m_param2){
// throw exception
}
对我而言,案例3并没有那么多意义,但这取决于您打算如何以及何时打印邮件。如果在父层(运行方法的代码)中有某些内容在发生异常时自动生成错误消息,我会坚持我的第二个建议。
一般来说,我认为缺少可选参数不是真正的错误情况,因此不应抛出任何异常。方法调用者无论如何都需要传递参数(当然,它可以为null)。