如果我有以下代码:
try {
//some offensive code
} catch (Exception e) {
String type = //get type of e
Assert.fail(type + " thrown.");
}
有没有办法可以获得Exception的类型,所以我可以输出:
NullReferenceException thrown.
InvalidOperationException thrown.
OutOfMemoryException thrown.
等?我知道我可以使用instanceOf()打开不同的类型,但这假设我期待一个特定的类型。
FWIW,我知道这个特定的代码块非常糟糕,并且违反了Eric Lippert建议的许多best practices。我只是好奇是否有办法在运行时确定异常类型。
答案 0 :(得分:6)
您可以致电e.getClass().getName()
获取课程名称。
getName()
返回包含包的名称,例如java.lang.OutOfMemoryError
。
getSimpleName()
只返回一个类名,例如OutOfMemoryError
。
请参阅Class object的javadoc以查看您可以获得的所有信息。