关于java:在一个catch块中添加不同的异常

adding different exceptions in one catch block

本问题已经有最佳答案,请猛点这里访问。

每次尝试捕捉在它下面发生的不同类型的异常之后,我都会有这么多catch块。

有没有一种方法可以在一个块中处理所有这些异常,而不是为每个异常添加一个新块?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
... } 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{}


1
2
3
4
5
6
Try
{
} catch ( Exception e )
{
// catch all
}

这是可能的,因为Java 7

1
2
3
4
5
try {
 ...
} catch( UnknownHostException | NullPointerException | ClientProtocolException ex ) {
            Log.e(LOG_TAG_EXCEPTION, e.getMessage());
}

但你可以使用

1
2
3
4
5
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
catch (Exception e) { Log.e(LOG_TAG_EXCEPTION, e.getMessage()); }

相当不错。但是如果你想对某个异常做出反应,你必须像以前那样捕捉特定的异常。