如何正确使用异常方法getMessage

How to properly use Exception method getMessage

我有以下 java 代码:

System.out.print("\fPlease Enter an integer: ");
while(!validInt){
   try{
      number = kb.nextInt();
      validInt = true;
   }catch(InputMismatchException e){
      System.out.print("Pretty please enter an int: ");
      System.out.print(e.getMessage());
      kb.nextLine();
      continue;
   )
   kb.nextLine(); 
}

如何设置 e.getMessage() 以便 System.out.println(e.getMessage()) 将打印“Pretty please enter an int:”

您只能在创建异常时设置消息,它是构造函数的参数。在您的情况下,如果 InputMismatchException 是这样创建的,那就太好了:

tnrow new InputMismatchException("漂亮请输入一个整数:")

由于您可能没有创建 InputMismatchException,因此您无法设置它的消息,但是在 catch 中您可以这样做:

catch(InputMismatchException ime){
    throw new IllegalArgumentException("Pretty please enter an int: ");
}

然后你上面的人可以捕捉到那个异常并且会有一个适当的错误消息。

这显然有点尴尬,这就是为什么通常不这样使用它的原因。

注:

您通常不应该 re-use java 例外,而是创建您自己的例外。这很烦人,我几乎总是 re-use IllegalArgumentException 或 IllegalStateException 因为它们是很好的、可重用的异常,并且描述了你想在上面讨论的“捕获并重新抛出”异常的通用代码中抛出的大部分原因.