在一个 catch 块中添加不同的异常



每次尝试捕获其下发生的不同类型的异常后,我都有如此多的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()); }

已经足够好了。但是,如果你想对某个异常做出反应,你必须像以前一样捕获特定的异常。

最新更新