Java通用异常

Ach*_*les 1 java generics exception

我正在处理JaudioTagger API来操作MP3文件,我不得不一遍又一遍地重复以下异常......我正在考虑有一个通用异常处理程序,我可以使用标志号转发每个异常,并且泛型方法会可能有不同的开关案件来处理它吗?可能吗 ?如果有人能给出方法签名或者调用方法,我真的很感激

} catch (CannotReadException ex) {
                Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ReadOnlyFileException ex) {
                Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InvalidAudioFrameException ex) {
                Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex);
            } catch (TagException ex) {
                Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex);
            }
Run Code Online (Sandbox Code Playgroud)

Joh*_*tts 5

在JDK 7之前你所能做的就是编写一个实用程序函数并从每个catch块中调用它:

private void handle(Exception ex) {
    Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex);
}

private void someOtherMethod() {
    try {
        // something that might throw
    } catch (CannotReadException ex) {
        handle(ex);
    } catch (ReadOnlyFileException ex) {
        handle(ex);
    } catch (IOException ex) {
        handle(ex);
    } catch (InvalidAudioFrameException ex) {
        handle(ex);
    } catch (TagException ex) {
        handle(ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

从JDK 7开始,您可以使用multi-catch:

private void someOtherMethod() {
    try {
        // something that might throw
    } catch (CannotReadException | ReadOnlyFileException | IOException
             | InvalidAudioFrameException | TagException ex) {
        Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅" 捕获多个例外 ".