Exception的try用法
就在前一两天刚接触并学会了有关Map的一些用法,
搞明白了map.add、键值、遍历列表数据等等
结果今天就在这基础上又遇到了问题,先上代码
private HttpClientParam unPassiveScan(Map<String,Object> map){
Map<String,String> paraMap = new HashMap<String,String>();
try{
Map<String,String> unParam = getSysParam("QRCODE_UN");
//getSysParam跳转获取数据库参数信息
paraMap.put("version","1.0.0")//版本号
paraMap.put("signature","")//签名
String termSnNo = null;
if(StringUtils.isEmpty((String) map.get("termSnNo"))){
//com.icss.instrutry.product.nap.posp.buss.unit.StringUtils.isEmpty判断字符串是否为空
termSnNo = DEFAULT_TERM_SN_NO;
}else {
termSnNo = map.get("termSnNo").toString();
}
} catch (Exception e) {
logger.error("报文异常:",e);
}
return httpClientParam;
}
这里的
Map<String,String> paraMap = new HashMap<String,String>();
new了之后按理来说是可以直接进行".put"操作的,其他的都没有问题却在这里面用了一个try…catch语法
这里重点讲try的两种用法,Exception后面再细说
try…catch…finally:
给出的结构:
try{
....
} catch(Exception e) {
....
} finally{
....
}
①这三个执行顺序:先执行try里面的语句,如果抛出异常则执行catch语句否则执行finally语句,对于finally语句无论前面执行情况如何都会执行
②finally中最好不要写return语句,因为这样会替换掉try或者是catch中的return值,因为return出去的值不会再发生改变所以在finally里无需再给catch中return的变量赋值
*******当然对于实际情况不一定非要写finally
try…catch…catch
给出的结构:
try {
A(0);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这种写法不是说让同一语法catch两次甚至更多次,对于异常都是继承至Exception,而catch中的实例对象不存在所谓的继承关系,是并行的,所以当第一个catch捕获到了异常这个异常可能就包含了后面所有的异常,后面的catch就没有意义。
*******所以文章开头代码中的try…catch意思就是执行try中的代码,如果没有问题则跳过catch继续往下走,否则执行catch抛出异常报错。