从void函数返回抛出异常。

时间:2016-01-28 07:14:02

标签: java android

我编写了一个抛出CustomException1,CustomException2的函数。

void myfunction() throws CustomException1, CustomException2
{
  .. At some point in time, i am return from this function.
  if ( some condition fails)  return ;

}

问题:

但问题是它从函数返回,但同时也是如此 这会抛出CustomException1。

如何确保在返回函数时不抛出CustomException1。

有趣的是,如果重新排序像

这样的例外名称
  void myfunction() throws CustomException2, CustomException1,

然后,当我从函数返回时,抛出了CustomException2。

2 个答案:

答案 0 :(得分:1)

只需在try-catch块中处理它

    try
    {
        if(some_condition_fails)
            return; 
    }
    catch(CustomException1 e) 
    {
        //here handle exception
    }

答案 1 :(得分:1)

没有。这仅仅意味着

  

在运行方法(不是函数)的过程中,这些   可能会抛出异常,并且不会在方法中处理,   但必须由调用此方法的方法处理。

所以:

public void divide(int i, int y){
  int x = i/y;
}

这是糟糕的编码(不看名字)。据你所知,i和y都可能为0。

所以,以防万一:

divide(5, 0);

将抛出异常。现在,让我们说你想用你自己的Exception类型或个人错误信息来处理它:

public void divide(int i, int y) throws MyException{
  if ( y == 0 ){
    throw new MyException("You can't divide by 0");
  }
  return i/y;
}

这里,它可能抛出一个传播给调用方法的异常,但只有当y为0时才会抛出。

所以,呼叫将是:

try{
  int x = getRandomValue();
  int y = getRandomValue();
  divide(x, y);
}
catch(MyException me){
  log("It seems y was 0");
  me.printStackTrace();
}

或者,你不会在这里抓住它,但会进一步传播Exception。

当然,你可以通过在方法本身中使用try-catch块来避免这种情况。