我编写了一个抛出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。
答案 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块来避免这种情况。