【问题标题】:try/catch clauses in switch statementsswitch 语句中的 try/catch 子句
【发布时间】:2018-10-03 02:25:55
【问题描述】:

当使用 switch 语句时,我是否应该在该案例中捕获与案例相关的异常?或捕获 switch 语句之外的所有相关异常?例如。

 try{
 switch(){
                   case 1:
                   case 2:
                   case 3:
         }
 catch(WrongDataException ex{sysout(ex);}

否则:

switch{ 
case 1: 
try{
}catch(WrongDataException ex{sysout(ex);}
break;
case 2:
try{
}catch(YouNeedToPayAttentionException ex){sysout(ex);}

?

【问题讨论】:

  • 如果发生不同类型的异常,肯定是后者。
  • 如果我采用第一种方法,我不能捕获所有可能的异常吗?
  • 如果您不在乎是从哪个case 出现异常,他们一定会在整个switch 语句周围使用一个try...catch。如果您必须以不同方式处理特定案例的异常,请将try...catch 放在这些案例中。两种方式都完全有效,这取决于您的特定需求。

标签: java exception exception-handling switch-statement


【解决方案1】:

最好将 switch 语句“包装”在 try/catch 子句中。

主要思路是

  1. 通过 switch 子句直接表达逻辑
  2. 如果有您打算处理的异常,请将其包装在 try/catch 块中。

【讨论】:

    最近更新 更多