找到正确的异常来捕获

时间:2014-03-19 11:21:03

标签: java string exception try-catch throw

我可以使用哪个例外来检查输入是否具有正确的数字“/” 输入应该像DD / MM / YYYY

try{
                String str = text.getText();
                StringTokenizer st = new StringTokenizer(str);
                String DD = st.nextToken("/");
                String MM = st.nextToken("/");
                String YYYY = st.nextToken();
}
catch( ???){

}

4 个答案:

答案 0 :(得分:1)

你会在nextToken的javadoc中找到它。 它说当没有更多令牌时它将抛出NoSuchElementException。

那说你最好不要使用try / catch,而是使用hasMoreTokens方法测试它。

答案 1 :(得分:1)

您可以使用自定义例外,但为此您需要声明验证日期的方法(斜线数)。

尝试这样

   public class Demo
      {


  public static void main (String[] args) {

      try {
        new MyClass().metToValidate("01/12/2014");
          } catch (A e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
          }

      }

}
class A extends Exception{}


class MyClass{
      public void metToValidate(String dateText) throws A{


                if( dateText.charAt(2) == '/'&& dateText.charAt(5) == '/' )
                    System.out.println("DATE IS OK"); 

                else
                    throw new A();
      }
    }

答案 2 :(得分:0)

nextToken抛出的异常是NoSuchElementException。

答案 3 :(得分:0)

            String str = "12/21223";
            int counter = 0;
            for( int i=0; i<str.length(); i++ ) {
                if( str.charAt(i) == '/' ) {
                    counter++;
                } 
            }
            if(counter == 3){
                StringTokenizer st = new StringTokenizer(str);
                String DD = st.nextToken("/");
                String MM = st.nextToken("/");
                String YYYY = st.nextToken();
                System.out.println(str);
            }else{
                System.out.println("Exception");
            }