在哪里抛出异常句柄?

时间:2015-10-28 01:04:18

标签: java exception-handling compiler-errors

我尝试编写一个用于输入数据验证的类,因为用户输入了实例变量的数据。这个类中没有主要方法只有构造函数。用户输入在测试工具中完成。我的问题是我在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 

1 个答案:

答案 0 :(得分:0)

就个人而言,我喜欢确保坏数据永远不会首先传递,尝试捕获和抛出错误(IllegalArgumentException,通常,因为它毕竟是),无论是收集传递给数据的数据构造

但是要回答你的问题,最好尽快拦截错误,以避免在以后依赖输入数据正确的函数中的垃圾输出中的未定义行为或垃圾,这就是这里的事情,能够重新提交混乱的输入。但是,由于您没有直接设置实例变量,因此只要您可以从用户那里获取数据以纠正任何搞砸的内容,您的设置就可以正常运行。