C#异常

来源:互联网 发布:买火车票12306软件 编辑:程序博客网 时间:2024/06/05 04:44

使用原则:

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

在try finally中返回数据

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

异常嵌套

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

捕获未处理的异常

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

使用自定义异常

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