import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String str = input.next();
int a;
try{
try{
a = Integer.parseInt(str);
}
catch(NumberFormatException nfe){
throw new CustomException("message");
}
if (a>50) throw new CustomException("message");
}
catch(CustomException e){
//do something
}
}
}
如果str
不是数字,parseInt
会抛出NumberFormatException
。但我想转换'这样我就可以CustomException
发送"消息"代替。我可以在不使用上面嵌套的try/catch
块的情况下执行此操作吗?
答案 0 :(得分:2)
你可以将你的例子改成
try {
a = Integer.parseInt(str);
if (a > 50) {
throw new CustomException("message");
}
} catch (NumberFormatException | CustomException e){
//do something
}
答案 1 :(得分:1)
使用Scanner.hasNextInt()
解析int而不用担心异常。
请参阅this question了解详细代码。
答案 2 :(得分:0)
你可以写:
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String str = input.next();
int a;
try{
a = Integer.parseInt(str);
if (a>50) throw new NumberFormatException("message");
}
catch(NumberFormatException e){
//do something
}
}
但我建议你使用你的版本,因为代码更具可读性。我的版本,即使删除内部尝试,也不如你的可读性。