如何正确使用异常方法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 因为它们是很好的、可重用的异常,并且描述了你想在上面讨论的“捕获并重新抛出”异常的通用代码中抛出的大部分原因.
我有以下 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 因为它们是很好的、可重用的异常,并且描述了你想在上面讨论的“捕获并重新抛出”异常的通用代码中抛出的大部分原因.