如何将异常传递给构造函数?

时间:2015-10-23 16:20:32

标签: java

我四处寻找,但不知道该怎么做

public class NoUserException extends Exception {
     public NoUserException(int id, Throwable cause){
          super("User" +id + " not found");
     }
}

public class User {
    public int getUserID(int id) throws NoUserException{
        try{
            throw new NoSuchUserException(id, throw ArrayIndexOutOfBoundsException here);
        } catch (ArrayIndexOutOfBoundsException e) {

        }
        return id;
    }
}

如何将ArrayIndexOutOfBoundsException传递给构造函数?我真的不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

查看异常中的构造函数 - 将原因引入超类的构造函数Exception:

public class FooException extends Exception
{

    public FooException( int id, Throwable cause )
    {
        super( "user " + id + " not found", cause );

    }

}

在您的代码中,您可以像这样使用:

public void method( int id ) throws FooException
{
    try
    {
        someMethodThatThrows();
    }
    catch ( ArrayIndexOutOfBoundsException e )
    {
        throw new FooException( id, e );
    }
}

private void someMethodThatThrows()
{
    throw new ArrayIndexOutOfBoundsException();
}

try块“查看”抛出的每个Exception,如果它是ArrayIndexOutOfBoundsException,它会跳转到catch块 - 在那里你可以抛出自己的异常ArrayIndexOutOfBoundsException作为原因。

答案 1 :(得分:0)

抛出新的NoSuchUserException(id,new ArrayIndexOutOfBoundsException());

你的意思是?