0
我正試圖編寫一個類,在用戶輸入實例變量的數據時進行數據驗證。這個類中只有構造函數沒有主要的方法。用戶輸入在測試工具中完成。我的問題是我是否像在此處所做的那樣在set方法中執行異常處理?或者我應該試着去捕捉其中一個構造函數?哪裏可以拋出異常句柄?
public class Customer
{
private String fName;
private String lName;
private String custTIN;
private int custNbr;
private int custHonor;
public Customer(String first, String last, String tin, int cust, int honor)
{
setFName(first);
setLName(last);
setCustTIN(tin);
setCustNbr(cust);
setCustHonor(honor);
}
public Customer(String first, String last, int cust, String tin)
{
setFName(first);
setLName(last);
setCustTIN(tin);
setCustNbr(cust);
}
/**************************************************************************************************************
* Set & Get Methods
**************************************************************************************************************/
public void setFName(String first) throws InvalidCustomerException
{
if(first == "null")
{
throw new InvalidCustomerException("You did not enter any data");
}
else
{
fName = first;
}
}
public void setLName(String last)
{
lName = last;
}
public void setCustTIN(String tin)
{
custTIN = tin;
}
public void setCustNbr(int cust)
{
custNbr = cust;
}
public void setCustHonor(int honor)
{
custHonor = honor;
}
public String getFName()
{
return fName;
}
public String getLName()
{
return lName;
}
public String getCustTIN()
{
return custTIN;
}
public int getCustNbr()
{
return custNbr;
}
public int getCustHonor()
{
return custHonor;
}
/****************************************************************************************************************
* toString Methods
****************************************************************************************************************/
//public String createSalutaion()
{
}//end createSalutation()
public String toString()
{
return String.format ("%d %s %s, Customer number %d, with Tax Id: %s", getCustHonor(), getFName(), getLName(), getCustNbr(), getCustTIN());
}//end toString()
}
這裏是我的異常類.....
/**
* Auto Generated Java Class.
*/
public class InvalidCustomerException extends Exception
{
private String inputValue = "null";
public InvalidCustomerException(String message)
{
super(message);
}
public InvalidCustomerException(String message, Throwable cause)
{
super(message,
cause);
}
public InvalidCustomerException(String message, String inputValue)
{
}
public InvalidCustomerException(String message, String inputValue, Throwable cause)
{
}
} // end of invalid customer exception
這取決於你與你建立的合同對象。在大多數情況下,我可能會在兩個地方做一些驗證,所以如果對象期待一個數字,我會確保用戶輸入的是一個數字,但對象可能會執行它自己的驗證以確保它是一個數字素數與給定範圍 – MadProgrammer
作爲一個說明,你的意思是'== null'?如果沒有,(1)這是一個非常奇怪的約束,(2)你需要使用'equals'。 – chrylis