Exception的try用法

掌握Exception处理:try-catch用法详解

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抛出异常报错。

在 Python 中,`try`、`except`、`exception` 和 `finally` 是用于异常处理的关键字,它们共同构成了异常处理机制,可提高程序的稳定性和可靠性,避免程序因错误而崩溃 [^3]。 ### 基本使用方法 #### `try-except` 结构 基本的异常捕获结构是 `try...except`,`try` 块用来测试可能发生异常的代码,`except` 块用来处理异常。如果 `except` 后没有指定异常,则默认处理所有的异常。对于每一个 `try`,都必须至少有一个 `except` [^4]。 ```python try: num = 1 / 0 # 这里会触发 ZeroDivisionError 异常 except: print("发生了异常,可能是除数为零等情况。") ``` #### `try-except` 指定异常类型 可以指定特定的异常类型进行捕获和处理。 ```python try: num = int("abc") # 这里会触发 ValueError 异常 except ValueError: print("输入的值不能转换为整数。") ``` #### `try-except-else` 结构 `else` 块在 `try` 块中的代码没有发生异常时执行。 ```python try: num = 10 / 2 except ZeroDivisionError: print("除数不能为零。") else: print(f"计算结果是: {num}") ``` #### `try-except-finally` 结构 `finally` 块无论是否发生异常,都会执行,通常用于执行清理工作,比如关闭文件或释放资源 [^2]。 ```python try: file = open('test.txt', 'r') content = file.read() print(content) except FileNotFoundError: print("文件未找到。") finally: if 'file' in locals(): file.close() ``` ### 原理 当 `try` 块中的代码执行时,如果发生异常,程序的执行流程会立即跳转到 `except` 块,根据异常类型匹配相应的 `except` 子句进行处理。如果没有匹配的 `except` 子句,异常会继续向上层调用栈抛出。无论是否发生异常,`finally` 块中的代码都会被执行。 ### 使用 `Exception` `Exception` 是所有内置异常的基类,如果 `except` 后面跟 `Exception`,可以捕获任意异常。同时,还可以使用 `as` 关键字将异常对象赋值给一个变量,方便后续处理。 ```python try: result = 1 / 0 except Exception as e: print(f"发生了异常: {e}") ``` ### 多个 `except` 块 可以使用多个 `except` 块来捕获不同类型的异常。 ```python try: num = int("abc") result = 1 / num except ValueError: print("输入的值不能转换为整数。") except ZeroDivisionError: print("除数不能为零。") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值