• 代码重构异常处理


    按照产生异常的原因是否明确,来区分异常的处理方式。避免在代码中全部用try-catch 去检测,甚至使用多重try-catch嵌套处理。

    异常明确,可以检测。

    比如取钱,很显然输入的取钱金额不能大于余额(信用卡不在考虑之列),这种错误是可以检测的,可排除的。

    public void Withdraw (decmal amount){

    if(amount>_balance){

    throw new ArgumentException("amount too large");

    }

    _balance-=amount;

    }

    这种程序,参数如果错误,就会抛出异常。所以调用时,做好代码检查就行了,可以不用try-cath去捕获

    调用:

    public void main()

    {

    if(account.CanWithdraw(amount)){

        //withdraw money

    }

    else{

         console.WriteLine("balance not enough");

    }

    }

    又比如:文本框中要求录入数字,完全不需要使用try-catch 去检测

    (你是否这样在写?)

    public bool checkNumber(string input){

    bool isNumber =false;

    try{

          int num = int.parse(input);

          isNumber = true;

    }

    catch(Exception ex){

          console.writeLine(ex.Message);

    }

    return isNumber;

    }

    代码改为:

    public bool checkNumber(string input){

    return Regex.IsMatch(value, @"^[+-]?/d*[.]?/d*$");

    }

    异常不明确,不可检测。

    例如:数据库操作,链接数据库查询。如果数据库服务器当机,或者传递的链接字符串参数错误,正常的代码也会查询失败,会抛出链接异常等错误。像这类异常,具有不确定性,不好检查。(使用try-catch,对抛出的错误进行捕获)。

    pulic void Connection(string strConn){

    try{

         SqlConnection conn = new SqlConection(strConn);

        //...

    }

    catch(SqlException ex){

          console.writeLine(ex.Message);

    }

    }

    还比如:文件操作,也需要使用try-catch捕获。

  • 相关阅读:
    Wauzh原理简析及audit规则风险评估
    浅析这句经常在框架中出现的JS代码加深对bind的理解
    浅析如何做web安全问题
    浅析JavaScript到底是什么
    浅析webpack异步加载原理及分包策略
    浅析JavaScript的执行机制
    浅析如何提高代码可读性复用性拓展性
    浅析代码编译过程
    浅析JavaScript的7种异常类型及如何快速排查
    浅析浏览器是如何调度进程和线程的
  • 原文地址:https://www.cnblogs.com/iampkm/p/2660465.html
Copyright © 2020-2023  润新知