抛出异常并允许继续进行方法

时间:2017-03-07 10:47:11

标签: android exception throw

我正在进行一些验证。有一些必填字段,其中一些是可选的。对于必填字段,我会抛出异常,但对于可选字段,我打印警告并且必须继续进行我的方法。我没有办法做警告部分。有人可以提供帮助吗?

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

} 

4 个答案:

答案 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)

这不是例外工作的方式。有几种方法可以解决它:

  1. 不要使用异常并打印错误(println()或某些文本字段,吐司或其他)

  2. 放置一个布尔标记,表示param2失败并在方法结束时抛出异常

    m_param2 = true
    //...
    if (param2 == null) {
        m_param2 = false
    }
    // you proceed here
    if (!m_param2){
       // throw exception
    }
    
  3. 使用子方法进行参数检查,这会在发生错误时抛出异常并捕获主方法中的错误并决定该怎么做。
  4. 对我而言,案例3并没有那么多意义,但这取决于您打算如何以及何时打印邮件。如果在父层(运行方法的代码)中有某些内容在发生异常时自动生成错误消息,我会坚持我的第二个建议。

    一般来说,我认为缺少可选参数不是真正的错误情况,因此不应抛出任何异常。方法调用者无论如何都需要传递参数(当然,它可以为null)。