类转换异常处理问题



我浏览了其中一段代码,其中代码编写如下,

try{ 
    ((classA) object).setCustomContext(currentObjectContext.getContext()) 
}catch(ClassCastException e){
    // In that case convert it into classB as not classA
    // and conversion code is written below 
}

问题/疑虑/查询 :

  1. instanceOf()没有使用,这很好,但仍然需要捕获此类条件的运行时异常。
  2. 对于上述情况,我们需要确定对象的类型并需要转换为相应的类,而不是在捕获异常之前捕获异常并处理到类 B?
  3. 据我所知,每次通过以这种方式处理运行时异常时,当这段代码块上有巨大的流量时,这不是正确/良好的 java 实践。
  4. 对于这种类型的处理,任何人都有更好的解决方案

(请注意,A类和B类来自不同的第三方库(

我不确定这里的实际问题是什么,因为你几乎自己回答了这个问题: 在将对象强制转换为特定类型之前,请在 if/else 语句中使用 instanceof、.isInstance(( 或 .isAssignableFrom(( 以确保强制转换不会失败(如果无法进行强制转换,它还为您提供更好的错误处理(。即。像这样:

if (object instanceof classA) {
  ((classA) object).setCustomContext(currentObjectContext.getContext())
} else if (object instanceof classB) {
  ((classB) object).setCustomContext(currentObjectContext.getContext())
} else {
  throw new IllegalStateException("Object is of unsupported type: "+object.getClass());
}

如果这不是你所追求的,请澄清你的问题。

相关内容

最新更新