如何在 java 中抛出 SystemException?

How to throw SystemException in java?

看到很多人这样写:

try {
       //something
}
catch (IOException e){
    throw new SystemException("IO Error", e);
}

我收到 "Cannot instantiate the type SystemException" 错误,似乎 SystemException 是一个抽象的 class,我怎样才能抛出它?

是的,它是一个抽象class,这意味着构造SystemException类型的对象没有意义。建议使用更有意义的异常类型。

您在代码中提到了 IOException。这意味着与 I/O 操作相关的异常,捕手可以相应地采取行动(可能是特殊的日志级别,一些 I/O 清理等)。

在您的具体情况下,我认为您应该将其更改为:

try {
    //something
}
catch (IOException e) {
    // log exception info and other context information here
    // e.g. e.printStackTrace(); 

    // just rethrowing the exception (call stack is still there)
    throw e;
}

P.S。相当离题,但来自 .NET 世界,我发现 C# 中的 throw ex;Java.

之间的 subtle difference