Java重新抛出异常
我有一个有两门课的项目。一个对象类和一个GUI类。 如果发生错误,我想抛出我自己声明的异常。 我有两种方法:Java重新抛出异常,java,Java,我有一个有两门课的项目。一个对象类和一个GUI类。 如果发生错误,我想抛出我自己声明的异常。 我有两种方法: public class getValueClass { private List<Value> liste; public List<Value> getValues() { try { liste = this.getVal(); } catch (ValueException ex) { Syste
public class getValueClass {
private List<Value> liste;
public List<Value> getValues() {
try {
liste = this.getVal();
} catch (ValueException ex) {
System.out.println("EXCEPTION!! " + ex.getMessage());
ex.printStackTrace();
}
return liste;
}
public List<Value> getVal() throws ValueException
{
liste = null;
try {
// initialize list
// do some stuff
//test exception
if(1 == 1)
{
throw new Exception();
}
} catch (Exception ex) {
throw new ValueException("QWE " + ex);
}
return liste;
}
}
但是我没有达到这一点,因为我已经在getValues()方法中捕捉到了它
如果不在getValues()方法的方法声明中添加抛出,是否可以这样做?(我从接口获取此方法,并且不会更改它)您可以抛出未经检查的RuntimeException,例如IllegalArgumentException或自定义RuntimeException子类
public List<Value> getValues() {
try {
liste = this.getVal();
} catch (ValueException ex) {
throw new IllegalArgumentException(ex.getMessage(), ex);
}
return liste;
}
public List getValues(){
试一试{
liste=this.getVal();
}捕获(值异常){
抛出新的IllegalArgumentException(例如getMessage(),例如);
}
返回列表;
}
有一种方法可以做你想做的事,但我建议你不要这样做,这取决于你的ValueException
的预期目的,因为它可能是未来bug的来源
您可以使用ValueException
extendRuntimeException
。顾名思义,RuntimeException
异常集是在运行时抛出的,不会在编译时声明,需要显式捕获。这样,您就不必向getValues()
方法添加throws
声明,但仍然可以在主方法中捕获它
免责声明解释如下: 我不喜欢这个想法(通常是
RuntimeException
s)的原因是,在明确查找之前,它们都是未捕获的。在我看来,这不利于编写易于使用的代码,虽然它有非常方便的用途,但我觉得使用它们并不合适,因为它们带有不确定性
同样,这是我的观点,继承自
RuntimeException
的Java异常不能在方法签名中声明的情况下抛出。也就是说,我认为未申报的例外是坏的。practice@Siguza呸!我以为只有我一个人这么想:)比我快了大约10秒;)
public List<Value> getValues() {
try {
liste = this.getVal();
} catch (ValueException ex) {
throw new IllegalArgumentException(ex.getMessage(), ex);
}
return liste;
}