0

親クラス「DownloadManagerWrapper.java」が 1 つあり、「DownloadManager.java」にあるメソッドを呼び出しています。例外が発生した場合は、例外をスローしてプログラムの実行を停止し、同時にlog4jを使用してログファイルにエラーを記録したいと考えています。

cacheUploadLog(intfcode,bankId)メソッドからメソッドを呼び出していdownloadDataCore()ます。したがって、同じエラーを2か所のファイルに記録しているように感じます。

  • cacheUploadLog()メソッドから
  • メソッドdownloadDataCore()によってスローされた例外をキャッチした後。cacheUploadLog()

メソッド内でブロックする必要がtryありますか?catchdownloadDataCore()

あなたの提案を提供し、ここで例外と処理を処理するのを手伝ってください。

DownloadManagerWrapper.java

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

DownloadManager.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 に答える