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)
在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)
请参阅" 捕获多个例外 ".
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |