表单验证,抛出异常哪个类应该负责良好实践

时间:2016-10-30 12:51:25

标签: java

可能有一个经验法则,哪个类应该负责表单验证?

一个简短的例子:

我有2个类PreferencesUI.java和NormalDistributionPreferences.java

NormalDistributionPreferences.java将所有方法设为静态,并允许我的应用程序的不同部分设置并从Preferences API / register中获取值。

示例:

public static void setAccuracyAuto(boolean auto){
    preferences.putBoolean("AccuracyAuto", auto);
}

并在PreferencesUI.java中,在用户填写表单并按下保存后执行:

private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
    if(trapeziumRuleRadioButton.isSelected()){
        NormalDistributionPreferences.setIntegrationType("TrapeziumRule");

    }else if(midPointRuleRadioButton.isSelected()){
        NormalDistributionPreferences.setIntegrationType("MidPointRule");

    }else{
       NormalDistributionPreferences.setIntegrationType("SimpsonsRule");
    }
    NormalDistributionPreferences.setAccuracyAuto(accuracyCheckBox.isSelected());
    NormalDistributionPreferences.setAccuracy(0);
    dispose();
}

我的问题是,如果用户选择了我不希望他们选择的东西,那么在偏好器类中的setter会抛出异常,然后在saveButtonActionPerformed中尝试并捕获 - 会显示错误吗?精度整数应始终为正数,对于某些集成类型,即使在保存数据或normalDistributionPreferences时也应在preferencesUI中强制执行该规则。

1 个答案:

答案 0 :(得分:0)

在我看来,每个实体都必须保持其完整性,因此如果首选项具有有限的法律价值限制,您必须在setter方法或AOP中保证这种完整性。如果某些客户端类试图违反这些策略,那么它们会捕获一些适当的异常,并且处理这些异常情况是这些客户端类的义务传递此非法值。