【问题标题】:Throws Exception in Constructor - good idea? [duplicate]在构造函数中引发异常 - 好主意? [复制]
【发布时间】:2019-02-27 14:09:26
【问题描述】:

我需要检查我传递给构造函数的数据在构造对象期间是否有效(我的学生项目,我只需要建议,不需要解决方案)。在构造函数中检查它是一个好主意吗?我有检查案例并抛出异常的方法。我标记了我的主要方法,它可以抛出异常。我不知道如何以其他方式检查它。你能给我一些建议吗?

public class Triangle {

private double height;
private double base;
private double sideB;
private double sideC;

public Triangle(double height, double base, double sideB, double sideC){
    this.height = height;
    this.base = base;
    this.sideB = sideB;
    this.sideC = sideC;
    isValid();
}

private void isValid(){
    try{
        if(height <= 0){
            throw new Exception("Wysokość musi być większa od 0!");
        }
        else if(base<=0 || sideB <=0 || sideC <= 0){
            throw new Exception("Rozmiar boku musi być większy od 0!");
        }
        else if(base + sideB <= sideC){
            throw new Exception("Trójkąt nie istnieje!");
        }
        else if(base + sideC <= sideB){
            throw new Exception("Trójkąt nie istnieje!");
        }
        else if (sideB + sideC <= base){
            throw new Exception("Trójkąt nie istnieje!");
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

【问题讨论】:

  • 没关系。不过,我通常会确保它是运行时异常。构造对象时必须处理已检查的异常,这很烦人。

标签: java


【解决方案1】:

我会说对于学生项目来说这是安全的。但是,只要您知道错误是什么,您的程序就会相应地处理它。如果你不理解它们,你不想抛出异常:)

但是,将它放在构造函数中是完全可以的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2016-10-02
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    相关资源
    最近更新 更多