抛出异常的实现问题
写法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 本方法不提供对异常的catch,而是将异常抛给上层调用方法
写法2 本方法提供对 try{} 内异常的catch, 而且是对不同类型的异常如(InstantiationException, IllegalAccessException)与以捕获并处理,而不会将Exception抛给上层
------解决方案--------------------如果用Exception,它就会把所有类型
异常捕获,在运行时你就会不知道是抛出InstantiationException,IllegalAccessException等,针对不同的异常采取不同的处理方式
而不是一刀切