每次尝试捕获其下发生的不同类型的异常后,我都有如此多的catch
块。
有没有办法在一个块中处理所有这些异常,而不是为每个异常添加一个新块?
... } catch (UnknownHostException e) {
Log.e(LOG_TAG_EXCEPTION, e.getMessage());
} catch (NullPointerException e) {
Log.e(LOG_TAG_EXCEPTION, e.getMessage());
} catch (ClientProtocolException e) {
Log.e(LOG_TAG_EXCEPTION, e.getMessage());
} catch (IllegalArgumentException e) {
Log.e(LOG_TAG_EXCEPTION, e.getMessage());
} catch (URISyntaxException e) {
Log.e(LOG_TAG_EXCEPTION, e.getMessage());
} catch (MalformedURLException e) {
Log.e(LOG_TAG_EXCEPTION, e.getMessage());
} catch (IOException e) {
Log.e(LOG_TAG_EXCEPTION, e.getMessage());
} finally{…}
这是可能的,因为Java 7
try {
...
} catch( UnknownHostException | NullPointerException | ClientProtocolException ex ) {
Log.e(LOG_TAG_EXCEPTION, e.getMessage());
}
但是你可以使用
try{
}
catch (Exception e) {
Log.e(LOG_TAG_EXCEPTION, e.getMessage());
}
更多信息 http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
Try
{
} catch ( Exception e )
{
// catch all
}
如果您只是记录异常
catch (Exception e) { Log.e(LOG_TAG_EXCEPTION, e.getMessage()); }
已经足够好了。但是,如果你想对某个异常做出反应,你必须像以前一样捕获特定的异常。