自定义异常 - Java

时间:2015-03-23 13:27:29

标签: java exception exception-handling

好吧,我正在与客户一起编程租车系统,这些系统都有身份证。在租用汽车时,客户需要使用id识别自己,所以我需要一个自定义异常来处理用户的输入是8个数字和一个字母,例如:

55550000A

如果输入是否为int,我已经做了一个例外,它就是:

   import java.util.*;
   import java.util.Scanner;
public class read {
static Scanner leer=new Scanner(System.in);
public static int readInt() {
    int num = 0;
    boolean loop = true;

    while (loop) {
        try {
            num = leer.nextInt();
            loop = false;
        } catch (InputMismatchException e) {
            System.out.println("Invalid value!");
            System.out.println("Write again");
    leer.next();
         } 
      }
    return num;
  }
}

您唯一需要做的就是声明变量并调用方法如下:

int variable=read.readInt();

所以如果id可以这样工作会很好,我的意思是另一个方法readId()将返回值。问题是,我不知道如何为自定义格式制作例外,或者如果可能的话,那么任何帮助都会有所帮助。非常感谢你!

4 个答案:

答案 0 :(得分:1)

你的问题有点混乱,但我想你想创建一个新的例外。

创建一个文件MyAppException.java

class MyAppException extends Exception {

private String message = null;

public MyAppException() {
    super();
}

public MyAppException(String message) {
    super(message);
    this.message = message;
}
}

你可以通过

扔掉它
throw new MyAppException();

但我想你想要的东西不需要例外:

public static String readId() {
    String id = "";
    while(true){
        id = leer.next();
        try{
            Integer.parseInt(id.substring(0,8));
        }catch(InputMismatchException e){
            System.out.println("Invalid Input");
            continue;
        }
        if(id.length() != 9)continue;
        if(Character.isLetter(id.chatAt(8)))break;
    }
    return id;
}

答案 1 :(得分:0)

@epascarello是正确的,除了他们名字中的Java之外,它们都是非常不同的,至于问题,尝试制作这样的自定义异常:

public class InputMismatchException extends Exception {
    public InputMismatchException(String message) {
        super(message);
    }
}

答案 2 :(得分:0)

通常,您只想抛出异常以防止某种错误导致程序以某种形式完全失败。 更好解决方案是在稍后在程序中使用之前验证输入。创建检查输入是否为所需长度和数据类型的条件,如果不是,则需要再次输入。

过度使用异常指向糟糕的设计,如果稍后修改代码,可能会出现严重问题。

答案 3 :(得分:0)

通过扩展Exception -

创建自己的例外
class InvalidIdException extends Exception
{
      public InvalidIdException() {}

      public InvalidIdException(String message)
      {
         super(message);
      }
 }

从您的客户端类检查输入ID是否有效。如果它是无效ID,则throw InvalidIdException。假设您正在使用validateId()方法验证您的ID。然后你可以从这个方法中抛出InvalidIdException -

boolean isValidId(String id) throws InvalidIdException{

    if(id == null){
            throw new InvalidIdException("Id is null");
        }
   else {
    //check for id formatting 
    //for example whether id has it's minimum length
    //contains any character etc.
    throw new InvalidIdException("Id has wrong format");
   }

   return true;
}