是否可以从catch子句中的NumberFormatException获取某种方式的源字符串,例如:。
try {
Integer.parseInt("test");
} catch (NumberFormatException e) {
e.sourceString(); \\ to return "test"
}
感谢。 斯蒂芬
答案 0 :(得分:4)
将其保存在try
块之前的变量中。
答案 1 :(得分:2)
没有良好的方式来做你所要求的事情;最好在try
块之前保存变量。
static NumberFormatException forInputString(String s) {
return new NumberFormatException("For input string: \"" + s + "\"");
}
如您所见,解析字符串未存储在异常中,因为它将错误消息作为构造函数的一部分创建。但是,因为我们总是知道格式,所以我们可以这样写:
try {
int foo = Integer.parseInt("foo");
} catch (NumberFormatException e) {
String message = e.getMessage();
System.out.println(message.substring(19, message.length() - 1));
}
因此,正如@chrylis所说,将值存储在try
块之前的变量中,如果存在异常则使用它是最佳解决方案。
有两个理由不这样做(这实际上是你在OP中提出要求的唯一方法):
String
答案 2 :(得分:0)
试试这个
String ss = e.getMessage();
ss = ss.substring(ss.indexOf('"') + 1, ss.length() - 1);