库中是否有任何自定义异常,我们可以使用自定义消息抛出哪些异常?

时间:2017-09-11 10:04:58

标签: 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=" + 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 
    }


}

在不同的班级

catch (run-time exception ex){
                 throw new ApplicationException(BdmsException, messageSource.getMessage("file.upload.failureExtension.message", "Error!! you can not upload a file with this extension", Locale.getDefault()), ex)
        }

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

3 个答案:

答案 0 :(得分:1)

您可以使用所需的消息创建自己的例外类型,继承自RuntimeException。在您的代码中只需添加:throw new MyRuntimeException("Put message here");。这样您就可以确定自己正在处理自己的异常。

但是,如果您对处理此特定异常不感兴趣,请使用throw new RuntimeException("Put message here");

Remember that Runtime Exceptions are unchecked

答案 1 :(得分:0)

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

无论如何,在这种情况下,我会去UnsupportedOperationException

答案 2 :(得分:0)

没有新类型的唯一可能方法是创建正常异常(ExceptionRuntimeException,两者都支持字符串消息),传递您选择的某些特定消息,然后在以后的代码检查中{{ 1}}或Exception并与您的信息相匹配。

RuntimeException

潜在的缺点是现在你必须声明异常try { throw new Exception("my specific string message"); catch (Exception e) { if ("my specific string message".equals(e.getMessage()) { // your code else { throw e; } } 。解决方案是使用ExceptionRuntimeException