为什么这个非法字符异常没有被解析为某种类型?

时间:2016-03-24 18:22:44

标签: java exception illegal-characters

对于作业,我必须输入一个字符串并将其反转,同时如果字符串中的字符不是字母,数字或空格,则抛出非法字符异常。我的教授说没有方法可以抛出条款。

这是我的代码

import java.util.*;
import java.io.*;
public class reverse3
{
   public static void reverse(String x)
   {
      char j;
      String reversedString;
      for(int i = 0; i < x.length(); i++)
      {
         try
         {
           if(!Character.isDigit(x.charAt(i)) && !Character.isLetter(x.charAt(i)) && !Character.isWhitespace(x.charAt(i)))
         {
            throw ( new IllegalCharacterException("Illegal Character in String"));
         }//end if
         else if(Character.isDigit(x.charAt(i)) && Character.isLetter(x.charAt(i)) && Character.isWhitespace(x.charAt(i)))
         {
            j = x.charAt(i);
            j = reversedString.charAt(i - 1);
         }//end else if
       }//end try
     catch(IllegalCharacterException e)
     {
       System.out.println(e.getMessage());
     }//end catch
   }//end for loop
}//end method

 public static void main(String[] args)
 {
   Scanner keyboard = new Scanner(System.in);
   String s;
   System.out.println("Please enter a string");
   s = keyboard.next();
   reverse(s);
 }//end main
}//end class

我在第15行和第23行不断收到此错误     错误:IllegalCharacterException无法解析为类型

2 个答案:

答案 0 :(得分:4)

我认为您正在寻找IllegalArgumentException

new IllegalArgumentException("Illegal Character in String"));
  

抛出表示某个方法已被传递为非法或   不恰当的论点。

否则,您可以根据需要定义自己的课程,但我不会看到添加值,因为IllegalArgumentException的消息可以自定义。

public class IllegalCharacterException extends Exception {

    public IllegalCharacterException(String msg) {
        super(msg);
    }

}

答案 1 :(得分:1)

您的代码也需要else阻止。 因为在您的代码else if部分中,一次有3种类型无法匹配。

Illegal Character Exception实际上是IllegalArgumentException。如果您要指定实际问题,则可以使用IllegalArgumentException。另一方面,您也可以使用Exception