3

如果我有以下代码:

try {
    //some offensive code     
} catch (Exception e) {
    String type = //get type of e
    Assert.fail(type + " thrown.");
}

有没有办法可以获取异常的类型,以便输出:

NullReferenceException thrown.
InvalidOperationException thrown.
OutOfMemoryException thrown.

ETC?我知道我可以使用 instanceOf() 打开不同的类型,但这假设我期待一个特定的类型。

FWIW,我知道这个特定的代码块很糟糕,并且违反了Eric Lippert 建议的许多最佳实践。我只是好奇是否有办法在运行时确定异常类型。

4

1 回答 1

10

您可以致电e.getClass().getName()获取班级名称。

getName()返回包含包的名称,例如java.lang.OutOfMemoryError.

getSimpleName()只返回一个类名,例如OutOfMemoryError.

有关Class 对象,请参阅 javadoc以查看您可以获得的所有信息。

于 2013-06-10T19:52:45.430 回答