Java 在我的函数头上使用关键字得到警告

Java 在我的函数头上使用关键字得到警告,java,exception,Java,Exception,在这个方法中,我抛出了一个名为“Data exception”的异常,因此我必须将“throws DataException”添加到函数头右侧?但是当我添加它时,我得到一个警告(来自IDE),说“com.DataException从未在该方法中抛出”,但我显然是在正确地抛出DataException(在两个位置)?想知道我在这里犯了什么错误。感谢您的帮助 public ResponseEntity<?> uploadExcelFile( @RequestParam( "fi

在这个方法中,我抛出了一个名为“Data exception”的异常,因此我必须将“throws DataException”添加到函数头右侧?但是当我添加它时,我得到一个警告(来自IDE),说“com.DataException从未在该方法中抛出”,但我显然是在正确地抛出DataException(在两个位置)?想知道我在这里犯了什么错误。感谢您的帮助

public ResponseEntity<?> uploadExcelFile( @RequestParam( "file" ) final MultipartFile file ) throws DataException       //Getting the warning to remove here.
    {
        try
        {
            if( NullEmptyUtils.isNull(file) || file.isEmpty() )
            {
                throw new DataException(StringConstants.EXCEPTION, StringConstants.FILE_IS_NULL_OR_EMPTY,
                        HttpStatus.BAD_REQUEST);
            }

            if( ExcelHelper.hasExcelFormat(file) )
            {
                excelService.save(file, getLoggedInUser());
            }
            else
            {
                throw new DataException(StringConstants.EXCEPTION, StringConstants.FILE_IS_NOT_AN_EXCEL_FORMAT,
                        HttpStatus.BAD_REQUEST);
            }

        }
        catch( DataException e )
        {
            logger.error(StringConstants.EXCEPTION, e);
            return buildError(new DataException("error", "Error occurred while uploading file",
                    HttpStatus.INTERNAL_SERVER_ERROR));
        }

        return buildResponse("Uploaded file ->" + file.getOriginalFilename());
    }

}

public ResponseEntity uploadExcelFile(@RequestParam(“file”)final MultipartFile文件)抛出DataException//获取要在此处删除的警告。
{
尝试
{
if(NullEmptyUtils.isNull(file)| | file.isEmpty())
{
抛出新的DataException(StringConstants.EXCEPTION,StringConstants.FILE_为空或为空,
HttpStatus.BAD_请求);
}
if(ExcelHelper.hasExcelFormat(文件))
{
保存(文件,getLoggedInUser());
}
其他的
{
抛出新的DataException(StringConstants.EXCEPTION,StringConstants.FILE不是EXCEL格式,
HttpStatus.BAD_请求);
}
}
捕获(数据异常e)
{
logger.错误(StringConstants.EXCEPTION,e);
返回buildError(新数据异常(“错误”,“上载文件时出错”),
HttpStatus.INTERNAL_SERVER_ERROR));
}
返回buildResponse(“上传的文件->”+file.getOriginalFilename());
}
}

throws子句用于异常,这些异常可能在方法运行时被抛出,但不会在方法中被显式捕获。在您的例子中,您确实抛出了一个
DataException
,但是您有一个
catch(DataException e)
,它捕获异常。因此,该异常永远不会从方法中抛出,这意味着您不必声明它

您只需在
throws
子句中声明异常,如果它是

  • 在方法中抛出(或在方法调用的对象中抛出)
  • 不在方法中捕获
  • 不是运行时异常的子类型

您应该避免声明任何不符合这些条件的异常。这就是compile警告告诉您的。

throws子句用于异常,这些异常可能在方法运行时被抛出,但在方法中没有被显式捕获。在您的例子中,您确实抛出了一个
DataException
,但是您有一个
catch(DataException e)
,它捕获异常。因此,该异常永远不会从方法中抛出,这意味着您不必声明它

您只需在
throws
子句中声明异常,如果它是

  • 在方法中抛出(或在方法调用的对象中抛出)
  • 不在方法中捕获
  • 不是运行时异常的子类型

您应该避免声明任何不符合这些条件的异常。编译警告就是这么告诉你的。

记住检查异常的catch或declare规则,它说:

  • 如果方法中的代码引发异常,则
    • 通过使用try-catch块或
    • 通过使用throws子句在方法签名中声明异常,以便方法的调用方知道方法可以抛出此异常并可以处理

在您的情况下,由于您已经在方法中捕获异常,因此不需要添加throws子句。

记住选中异常的catch或declare规则,该规则规定:

  • 如果方法中的代码引发异常,则
    • 通过使用try-catch块或
    • 通过使用throws子句在方法签名中声明异常,以便方法的调用方知道方法可以抛出此异常并可以处理

在您的情况下,由于您已经在方法中捕获异常,因此不需要添加throws子句。

方法中捕获了
DataException
,您的方法不会将其抛出给调用方。
DataException
在方法中捕获,你的方法不会把它扔给打电话的人。谢谢你简洁的解释,我已经接受了答案。请你帮我解决这个问题,我被这个问题困扰了很长时间,还没有人回答它-提前谢谢@Dawoodibnkareem谢谢你简洁的解释,我已经接受了答案。请你帮我解决这个问题,我被这个问题困扰了很长时间,还没有人回答它-提前谢谢@达乌迪班卡雷姆