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

时间:2015-01-10 11:28:40

标签: java android

在每次尝试捕获不同类型的异常后,我有这么多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{…}

3 个答案:

答案 0 :(得分:1)

这是可能的,因为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

答案 1 :(得分:1)

Try
{
} catch ( Exception e )
{
// catch all
}

答案 2 :(得分:0)

如果您只是记录异常

catch (Exception e) { Log.e(LOG_TAG_EXCEPTION, e.getMessage()); }

非常好。但是如果你想对某个异常作出反应,就必须像以前一样捕获特定的异常。