Java 库中是否已经存在任何自定义异常,我们可以在希望它与自定义消息一起抛出的地方使用它?

Java 库中是否已经存在任何自定义异常,我们可以在希望它与自定义消息一起抛出的地方使用它?,java,exception,exception-handling,runtimeexception,Java,Exception,Exception Handling,Runtimeexception,我想从一个方法中抛出一个运行时异常,该方法将在另一个类中捕获,而另一个类又抛出一个特定的自定义异常或执行一些操作 def checkExtension(String fileName,file) { String [] arr= Holders.config.bdmserver.defaultfile_ext for (int i=0; i < arr.length-1;i++) { println("file extension=" + f

我想从一个方法中抛出一个运行时异常,该方法将在另一个类中捕获,而另一个类又抛出一个特定的自定义异常或执行一些操作

    def checkExtension(String fileName,file) {

    String [] arr= Holders.config.bdmserver.defaultfile_ext
       for (int i=0; i < arr.length-1;i++) {
        println("file extension=" + fileName.substring(fileName.length() - 3))
        if (arr[i].equals(fileName.substring(fileName.length() - 4))) {
            println("in if becoz its either .zip or .exe")
            // throw run-time exception 
        }
    }

    def fileSize = (file.getSize())/12000
    if (fileSize > 5 ){
       // throw run-time exception 
    }


}

在不创建新的自定义异常类的情况下,如何执行此操作?

为什么您不想自己创建自定义异常


无论如何,在这种情况下,我会选择
不支持操作异常

您可以创建自己的异常类型,其中包含所需的消息,继承自
RuntimeException
。在您的代码中,只需放置:
抛出新的MyRuntimeException(“在此处放置消息”)。通过这种方式,您可以确保您正在处理自己的异常

但是,如果您对处理这个特殊异常不感兴趣,只需使用
thrownruntimeexception(“在这里放置消息”)


没有新类型的唯一可能方法是创建正常异常(
异常
运行时异常
,两者都支持字符串消息),传递您选择的特定消息,然后在以后的代码中检查
异常
运行时异常
,并匹配您的消息

try {
    throw new Exception("my specific string message");
catch (Exception e) {
    if ("my specific string message".equals(e.getMessage()) {
        // your code
    else {
        throw e;
    }
}

潜在的缺点是,如果异常是
exception
,则现在必须声明异常。解决方案是使用
RuntimeException
不安全的.throweException()

您不喜欢在项目中创建自定义异常的原因是什么?这不是Java。也许是斯卡拉?”我想从一个方法中抛出一个运行时异常,该方法将在另一个类中捕获,而另一个类又抛出一个特定的自定义异常”:那么为什么它必须是
运行时异常
?首先,它是一个groovy代码。如果你明白逻辑,它实际上是在上传一个文件,如果有人试图上传.exe文件,我想抛出一个异常。我总是可以创建一个自定义异常,但在这种情况下这只是一个乏味的工作,因为我必须遵循组织标准,通过遵循该特定jar的其他标准在jar中创建自定义异常。使用IllegalArgumentException with正确的信息,尽管使用自定义业务异常更好。他直截了当地说他不想要新的异常类型,但你建议他创建自定义异常?我反对否决票,理由是创建自定义异常实际上可能是最谨慎的做法。虽然这是真的,它不回答问题throw new RuntimeException(“在此处放置消息”);谢谢,我尝试了上面的解决方案,如果您从其他类调用该方法,它不会引发异常。事实上,e.getMessage()为null.message是您应该将自己设置为标识符标记的内容。显然,我设置了一条消息,但它仍然为null。
try {
    throw new Exception("my specific string message");
catch (Exception e) {
    if ("my specific string message".equals(e.getMessage()) {
        // your code
    else {
        throw e;
    }
}