如何修复Java代码的Catch块中的以下错误?

时间:2016-02-25 10:18:57

标签: java try-catch printstacktrace

我有一个代码段,在我的代码的printStackTrace()块下使用catch时会抛出错误。以下是代码段。

         try
     {
            # Debug Code added on 19 Feb 2016
            logger.log(Level.INFO, "baseDNs[i] = "+baseDNs[i]);
            logger.log(Level.INFO, "search ="+search);
            logger.log(Level.INFO, "attributes = "+attributes);

        it = basicCmAgent.find_managed_objects(baseDNs[i], search, attributes);
     }
     catch(Exception e)
     {
        # Debug Code added on 19 Feb 2016
        logger.log(Level.SEVERE, "Caught Error : "+e.printStackTrace());

        logger.log(Level.WARNING, "Could not find managed objects with base DN " + baseDNs[i]);
        return false;
     }

以下是错误:

       asses/xml-apis.jar:../3pp_libraries/cxa_classes/irp3gppR99_330_j140.jar -d lib com/ericsson/nms/temip/importer/BasicCmConnection.java
    com/ericsson/nms/temip/importer/BasicCmConnection.java:177: 'void' type not allowed here
            logger.log(Level.SEVERE, "Caught Error : " +e.printStackTrace());
                                     ^
Note: ./com/ericsson/nms/temip/importer/BasicCmConverter.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
*** Error exit code 1

Stop.
*** Error exit code 1

Stop.

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

printStackTrace()具有void返回类型,因此您无法将其连接到String或将其用作另一种方法的参数。

您可能希望改用getStackTrace()

logger.log(Level.SEVERE, "Caught Error : "+e.getStackTrace());

答案 1 :(得分:1)

e.printStackTrace()不返回String,它返回void并打印堆栈跟踪。您正在尝试String + void = String这不起作用。

答案 2 :(得分:0)

问题出在这一行

 logger.log(Level.SEVERE, "Caught Error : "+e.printStackTrace());

e.printStackTrace的返回类型为void。你不能连接String + void。

更好地使用e.getStactTrace();