• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 你是不是这样写异常处理代码的呢?

你是不是这样写异常处理代码的呢?

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java异常处理代码,异常处理代码,异常处理的作用是什么,生产异常处理流程,品质异常处理单等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

经常看到同事这样写代码:

   try
    {
         //do something
    }
    catch (Exception ex)
    {
         //这里要做日志记录
    }

    return ds;
}
</div>
这里有几个问题:

1:很明显,如果QueryDB方法发生了任何异常,客户端无法得知,例如客户端调用QueryDB方法,该方法返回了null,那这代表数据库里面没有这个数据呢?还是抛出了异常?

2:注释是不应该存在的,它应该被真实的日志记录代码给替代,例如Log.Write(ex);

3:该方法捕捉所有异常,这样任何异常都被捕获了,这对于开发很不方便,永远不要捕获你不能处理的异常。

4:为什么这样写代码??解释是:真实用户不希望看到错误信息,初听起来,好像有几分道理,试想没有哪个用户会用你的软件,然后老是抛出个异常什么的,但是这是部署之后的事情啊,而不是开发的程序员不希望看到异常啊。在开发的时候,如果能够看到详细的异常信息,那么可以很快的改正,修复Bug,何乐而不为之呢??

于是修改为如下:

     try
     {
           //do something
     }
     catch (Exception ex)
     {
          Log.Write(ex);
          throw ex;
      }

      return ds;
}
</div>
好了,现在异常总算被捕获了,并且也被成功了抛出来了。

这段代码还是有问题??

在catch语句块中,throw ex; 最好修改为throw;

因为在.net中,异常都是不可修改的,每一次异常被抛出的时候,异常的堆栈跟踪信息都会被重置,

Throw 不会重置堆栈跟踪信息,但是throw ex;会重置。所以为了更方便的查找异常的抛出位置,最好使用throw 语句,而不是throw ex;否则clr会认为异常是在catch语句块中抛出的。

顺便再说一句,不要捕获你不能处理的异常,如果希望将来用户看不到异常信息,

大可以使用AppDomain.或者Application的全局异常处理。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 你是不是这样写异常处理代码的呢?

相关文章

  • 2017-05-28C#递归算法之分而治之策略
  • 2017-05-28C#中DataGridView的样式
  • 2017-05-28C#实现rar压缩与解压缩文件的方法
  • 2017-05-28C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
  • 2017-05-28c#多线程编程基础
  • 2017-05-28将数组中指定数量的元素移动数组后面的实现代码
  • 2017-05-28c#使用多线程的几种方式示例详解
  • 2017-05-28WPF设置窗体可以使用鼠标拖动大小的方法
  • 2017-05-28C#字符串使用密钥进行加解密
  • 2017-05-28C# 将字节流转换为图片的实例方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#截图程序类似腾讯QQ截图实现代码
    • 详解C#的排列组合
    • c#数据绑定之删除datatable数据示例
    • 使用C#开发Socket通讯的方法
    • c#裁剪图片后使用zxing生成二维码示例分享
    • C#给picturebox控件加图片选中状态的2个方法
    • 基于FineUI Grid控件添加右键菜单
    • C#中深度复制和浅度复制详解
    • C#与js实现去除textbox文本框里面重复记录的方法
    • C# 如何在MVC3中取消备用控制器的选择

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有