0

我有一个父类“DownloadManagerWrapper.java”,我正在调用“DownloadManager.java”中存在的方法。如果出现异常,我想抛出异常并停止程序执行,同时我想使用 log4j 在日志文件中记录错误。

cacheUploadLog(intfcode,bankId)从方法调用downloadDataCore()方法。所以我觉得我在两个地方记录了相同的错误:

  • cacheUploadLog()方法
  • downloadDataCore()捕获方法抛出的异常之后cacheUploadLog()

是否需要拥有trycatch阻止内部downloadDataCore()方法?

请提供您的建议并帮助我处理这里的异常和处理。

下载ManagerWrapper.java

    public static void readInterfaceConfig(String intfCode, String bankId,String downloadId) {
        DownloadManager manager = new DownloadManager();
        manager.downloadDataFromCore(intfCodeFromDB, bankId, downloadId);
    }

下载管理器.java

    public String downloadDataFromCore(String intfcode, String bankId, String downloadId) throws DownloadCoreDataException {
        try
        {
            // here it contain some other code. formatting code, splitting, and other logic. may be  a chance there might exception arise here.                
            cacheUploadLog(intfcode, bankId);
            cacheDownloadConfig(intfcode, bankId);
        } catch (DownloadCoreDataException exception) {
            errorLogger.error("Error in downloaddatafromcore method", exception);
            throw new DownloadCoreDataException("Error in downloaddatafromcore method", exception);
        }
    }

    private void cacheUploadLog(String intfcode, String bankId) throws DownloadCoreDataException {
        try{
            String lastDownloadedTime = getLastDownloadedTime(intfcode, bankId);
        } catch (Exception exception) {
            errorLogger.error("Error in getting primary_key from update_log table",exception);
            throw new DownloadCoreDataException("Error in getting primary_key " + 
                "from update_log table",exception);
        }
    }
4

2 回答 2

1

如果要记录参数值以进行调试,可以在内部有一个try-catchdownloadDataFromCore并记录这些参数并抛出异常。否则不需要,因为该方法已经抛出异常。

于 2013-03-02T09:23:21.787 回答
0

首先,尝试解决这个问题:-

DownloadManager manager = new DownloadManager().downloadDataFromCore(intfCodeFromDB, bankId, downloadId);

这是我见过的最奇怪的方法调用,具有这样的签名。

public String downloadDataFromCore(String intfcode, String bankId,
                            String downloadId)

接下来,来回答你的问题。由于您想同时记录错误,然后出于某种原因再次抛出它,您需要try-catch在方法中包含它。否则,它不是必需的,因为该方法已经具有throws抛出异常的子句。

于 2013-03-02T09:26:26.917 回答