我有两种方法。方法A调用方法B.我不能改变两者的异常(作业要求)。然而,2个例外意味着完全相同的事情,所以当我在A上调用方法B时,我已经知道B的例外不会被抛出。但是,我仍然得到了#34;未处理的异常"来自Eclipse的错误。我怎么能避免它?
以下是方法
public void createProfile(Profile user) throws PEException {
Vector<Profile> p = new Vector<Perfil>();
try{
if (repository.search(user.getUsername()) == null) {
repository.register(user); //error on this line when I call the method on main
}
else {
throw new PEException(user.getUsername());
}
} catch (PEException e){
e.printStackTrace();
}
}
public void register(Profile user) throws UJCException {
try {
if (this.search(user.getUsername()) == null) {
this.users.add(user);
}
else {
throw new UJCException(user.getUsername());
}
} catch (UJCException e) {
e.printStackTrace();
}
}
我不能改变方法的定义(我不能在createProfile上抛出UJCException)。提前致谢
答案 0 :(得分:2)
你不应该抛出异常,然后在同一个方法中捕获它们。这首先打败了抛出异常的目的。调用你的2个方法的方法应该没有任何东西(void)或者在出现错误的情况下的异常。确保您的方法createProfile()
和register()
实际上可以抛出它们的异常,因此调用它们的方法可以捕获异常,并在抛出异常时执行它们所需的任何操作。
public void createProfile(Profile user) throws PEException {
Vector<Profile> p = new Vector<Perfil>(); //not being used...
if (repository.search(user.getUsername()) == null) {
try{
repository.register(user);
}catch(UJCException e){
e.printStackTrace();
throw new PEException(user.getUsername());
}
}
else {
throw new PEException(user.getUsername());
}
}
public void register(Profile user) throws UJCException
{
if (this.search(user.getUsername()) == null) {
this.users.add(user);
}
else {
throw new UJCException(user.getUsername());
}
}
现在,当你调用这些方法时,在try catch中包含调用并根据调用的方法捕获相应的异常