C#属性指向自己导致的错误
来源:互联网 发布:梦幻西游手游网页版mac 编辑:程序博客网 时间:2024/06/03 06:46
一次改Windows服务的代码, 原来是用到了多线程, 这一次的改动比较大, 改完却发现服务运行到一半就不行了, Windows日志也就提示服务已中止,但没有具体的原因。对于服务,调试什么的比较麻烦, 又加上一个多线程,导致排查bug异常艰难。虽然说可以先按单线程来写测试用例,但实际项目比较庞大了, 要构造一个测试用例都不容易。后来没法,用了踩地雷法,一步步加日志,看哪里出现了异常。日志加了很多,最终还是找出了元凶——可能是犯迷糊,无意中把属性指向了自己!
其实最初在学习属性时, 老师就特别警告过: 如果属性指向了自己, 会导致死循环。这个也没什么好追究了。
关键是如何来观察、确定这种错误呢?
写了一段最简单的demo看看:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication10{ class Program { static void Main(string[] args) { try { TestClass obj = new TestClass(); Console.WriteLine("开始输出……"); Console.WriteLine(obj.Type); Console.WriteLine("输出完毕。"); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); } } class TestClass { public int Type { get { return this.Type; } } }}
可以看到:try catch 都无法捕获这个异常!
或者说: clr 认为这并不是一个异常, 只是代码在逻辑上有问题, 但这个问题它也不敢肯定就是写代码的人弄错了, 只好这样提示一下。
但这种情况, 有没有办法明确捕获到而不致于出了问题找那么困难呢?
如果哪位看官有更好的办法请告知!
阅读全文
0 0
- C#属性指向自己导致的错误
- duilib 修复padding属性导致其他控件自动计算宽高度错误的bug和导致自己宽高度错误的bug
- innerHTML属性导致未知的运行时错误ie bug
- duilib relativepos属性导致控件错误的bug修复
- C# 引用类型导致的只读属性失效
- vs2010打包程序制作的快捷方式指向错误的位置(指向安装包文件) 导致每次启动都要windows正在配置
- Oracle C#的"算术运算导致溢出"错误
- XIB 导致的错误
- strlen导致的错误
- &导致的错误
- 导错包导致的错误
- 做自己的二级域名指向系统
- 做自己的二级域名指向系统
- 函数返回指向自己的指针
- 验证根元类的isa指针指向自己
- 模型中添加属性导致数据表中不存在column的错误
- 空指向异常错误的可能原因
- 一个指向栈的指针错误,,防不胜防
- Shell脚本常用
- 02-大话程序猿眼里的高并发架构
- MySQL从头至尾汇总(2.管理篇)
- latex正上标记
- Android转载之SurfaceView使用详解
- C#属性指向自己导致的错误
- Lambda 表达式 学习
- 插入排序法:ALDS1_1_A:Insertion Sort
- 使用 traceback 获取详细的异常信息
- jQuery插件Cloud Zoom放大镜效果
- java字符集
- c语言高级指针理解及应用(上)
- 偷偷吐槽:为什么表格结构不是移动优先(Why datatable is not mobile first style)
- MS sqlserver数据库恢复出错 database is in use can not be restored