写法1
         public static Object copyBean(Object srcObj) throws Exception
{ Object desObj=srcObj.getClass().newInstance();
          BeanUtils.copyProperties(desObj,srcObj);
return desObj;
}
写法2 public static Object copyBean(Object srcObj) 
{
// Object desObj=new Object();
Object desObj=null;
try
{
desObj = srcObj.getClass().newInstance();
}
catch (InstantiationException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
catch (IllegalAccessException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
try
{
BeanUtils.copyProperties(desObj,srcObj);
}
catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InvocationTargetException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return desObj;
}我很想知道, 写法1和写法2在实际应用中有什么不同, 主要集中在,既然统一抛出一个Exception就可以了,为什么要catch那么多个Exception的子类, 我想这种做法,肯定是有原因的.请大家来说说.

解决方案 »

  1.   

    方法1 本方法不提供对异常的catch,而是将异常抛给上层调用方法
    写法2 本方法提供对 try{} 内异常的catch, 而且是对不同类型的异常如(InstantiationException, IllegalAccessException)与以捕获并处理,而不会将Exception抛给上层
      

  2.   

    如果用Exception,它就会把所有类型异常捕获,在运行时你就会不知道是抛出InstantiationException,IllegalAccessException等,针对不同的异常采取不同的处理方式
    而不是一刀切