如何在catch语句中从Java异常对象检索多个SSMS查询错误消息?

如何在catch语句中从Java异常对象检索多个SSMS查询错误消息?,java,sql-server,exception,ssms,sqlexception,Java,Sql Server,Exception,Ssms,Sqlexception,我正在开发一个JSON异常HTTP响应生成器,它基于在SQLServerManagementStudio中执行select查询时产生的错误消息。我有一个try/catch块,其中在try中执行select查询,在catch中执行带有异常消息的响应构建 我的问题是,我的异常响应生成器当前只能从失败的SSMS查询中捕获第一条错误消息。如果来自单个查询的错误消息超过1条,则会忽略第一条之后的所有错误消息。我想改进异常响应生成器,使其在同一个响应中返回来自单个查询执行的每个SSMS错误消息。因此,如果我

我正在开发一个JSON异常HTTP响应生成器,它基于在SQLServerManagementStudio中执行select查询时产生的错误消息。我有一个try/catch块,其中在try中执行select查询,在catch中执行带有异常消息的响应构建

我的问题是,我的异常响应生成器当前只能从失败的SSMS查询中捕获第一条错误消息。如果来自单个查询的错误消息超过1条,则会忽略第一条之后的所有错误消息。我想改进异常响应生成器,使其在同一个响应中返回来自单个查询执行的每个SSMS错误消息。因此,如果我在单元测试中拼错了两个列名,我希望响应给我两次“Invalid column name”消息。有人知道这是否可能吗?有没有一种方法可以遍历异常对象并获得多个错误?不是单个错误的堆栈跟踪,而是查询中多个独立错误的“sys.messages”错误消息“text”值

我的渔获量如下:

    catch (Exception e) {
        response = myresponse.exceptionResponse(e);
    }
 public MyResponse exceptionResponse(Exception exception){
    JsonObjectBuilder response = Json.createObjectBuilder();
    if (exception != null) {
        msg = exception.getMessage();
        if (msg == null) {
         msg = NULL_EXCEPTION;
     }
 }
 response.add("response", msg);
 response.add("id",Integer.toString(counter++));
 isError = true;
 responseArray.add(response);
 return this;
我不确定Exception对象是否包含来自单个SSMS查询的多个错误消息实例,或者它是否只包含第一个实例,这可能是Exception response builder仅返回单个错误消息的原因。另外,生成异常响应的代码如下所示:

    catch (Exception e) {
        response = myresponse.exceptionResponse(e);
    }
 public MyResponse exceptionResponse(Exception exception){
    JsonObjectBuilder response = Json.createObjectBuilder();
    if (exception != null) {
        msg = exception.getMessage();
        if (msg == null) {
         msg = NULL_EXCEPTION;
     }
 }
 response.add("response", msg);
 response.add("id",Integer.toString(counter++));
 isError = true;
 responseArray.add(response);
 return this;
}`


如果有一种方法可以迭代异常,就像SQLExceptions一样,我肯定可以这样做,但我找不到任何关于迭代异常对象的信息。任何建议都将不胜感激

如果您拼错了两个列名,SQL Server将只返回一条第一个列名拼错的消息。我认为不可能捕获所有发生的错误,因为在任何给定的时间只有一个错误发生。如果SQL Server确定您的查询有问题,它将不会继续尝试执行查询。

如果您拼错了两个列名,SQL Server将只返回一条第一个列名拼错的消息。我认为不可能捕获所有发生的错误,因为在任何给定的时间只有一个错误发生。如果SQL Server确定您的查询有问题,它将不会继续尝试执行查询