Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java构造函数忽略异常_Java_Constructor - Fatal编程技术网

Java构造函数忽略异常

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

在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 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!
    ...