Java构造函数忽略异常
在Java中,如何忽略setter抛出的异常?乙二醇 我有这样一个二传手:Java构造函数忽略异常,java,constructor,Java,Constructor,在Java中,如何忽略setter抛出的异常?乙二醇 我有这样一个二传手: public setValue( double value){ try{ // trying to see if its a double. if it is, set private variable // } catch(Exception ex){ //i want to catch if its not a double, then i set priv
public setValue( double value){
try{
// trying to see if its a double. if it is, set private variable
//
}
catch(Exception ex){
//i want to catch if its not a double, then i set private varieble
// to default value.
}
}
在构造函数中,如果我将setValue()与无效值一起使用,如何忽略异常?ie我不想对调用代码显示任何异常。如果我不执行任何printstacktrace()操作,可以吗?我如何测试双精度,无论它是作为“字符串”还是真正的双精度?谢谢您可能不想忽略异常。另一种方法是返回一个布尔值,指示是否成功设置了字段:
public boolean setValue(...) {
try {
// set the field
return true;
} catch (SomeException e) {
return false;
}
}
或者,如果这更有意义,您也可以将异常传递回调用方。试试这个。根据你的问题
//doubleVal is the value you are looking to set.
public void setValue(...) {
try {
// set the field
doubleVal = Double.parseDouble(inputvalue);
} catch ( NumberFormatException e) {
doubleVal=0.0;//default
}
}
嗯
我如何测试双人,无论它是否作为
“弦乐”还是真正的双人舞
为什么要这样做?如果该值无效,您应该希望从
setValue
的调用者那里获取一个异常,这更有可能是一种合理的处理方法。请这样想:如果调用的值无效,您现在就要抛出异常,而不是蹒跚而行。如果您使用后一种方法,那么这只会让用户调试变得更加困难(因为现在他/她必须跟踪所有的“交错”以找到实际问题)。考虑到您发布的setter代码,您永远不会看到从任何地方调用它的异常,除非catch块中省略的代码重新调用捕获的异常,在这种情况下,你首先为什么要在那里捕获异常?@dorothy如果你只想检查它是否是双精度的,你不需要检查。如果setValue
的参数不是double,则代码甚至不会编译。
public setValue( double value){
// Did this method compile?
// Then the double must be valid!
...