C#异常

作者: 晓龙酱 | 来源:发表于2017-09-18 10:31 被阅读13次

    使用原则:

    • 正常业务逻辑,不要使用异常来处理
    • 不要总是尝试去捕获或引发异常,而应该允许异常向调用堆栈往上传播
    • 只有在出现资源问题,严重错误时才引发异常
    • 如果向用户抛出异常,最好包装一下,引发一个含有友好信息的新异常
    • 抛出新异常,需要将原有异常附加进来,便于查错

    在try finally中返回数据

    • 若在try中返回值类型数据,则在finally中对数据的操作无效
    • 若在try中返回引用类型数据,则在finally中对数据操作有效
    • 建议在try finally之外返回数据,这样在finally中修改值类型,引用类型数据都会生效

    异常嵌套

    • 不恰当的异常嵌套,会导致打印出的堆栈不完整
    • 不要在底层捕获不会处理的异常
    • 在最上层捕获异常
    // Wrong
    try
    {
        Method1();
    }
    <font color=red>catch(Exception err)</font>
    {
        // 这里没有处理错误,而直接继续转发这个错误,会导致这之前堆栈信息丢失
        <font color=red>throw err</font>;
    }
    
    // correct
    try
    {
        Method1();
    }
    <font color=red>cache</font>
    {
        <font color=red>throw;</font>
    }
    

    捕获未处理的异常

    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    
    static void CurrentDomain_UnhandleException(object sender, UnhandledExceptionEventArgs e)
    {
    }
    

    使用自定义异常

    • 方便调试
    • 包装若干异常
    • 便于调用者编码,根据业务划分异常
    • 引入新异常类

    相关文章

      网友评论

          本文标题:C#异常

          本文链接:https://www.haomeiwen.com/subject/uhbvsxtx.html