#if DEBUG_#endif [控制台输出异常信息]
2008-12-17 22:25
405 查看
debug最理想的状态是什么?这个不用我说,那就是defect free,没有bug。所以我们要做到的是尽量防止bug,bug出现后能迅速定位问题所在,修正这个bug。.net提供了很丰富的debug手段,除了一些debug相关的nampespace。常用的有条件编译、try/catch、trace以及断言(Assert)等,如果你能熟练掌握这些手段,综合运用,那么debug将不再是一场恶梦。下面我将分别讲一下这些手段的运用。
一、捕捉异常(try / catch /finally)
/// <summary>
/// 取得数据库连接
/// </summary>
/// <param name="a_strDatabase">数据库名</param>
/// <param name="oa_objConnection">输出参数,空数据库连接</param>
public void GetConnection(string a_strDatabase , out SqlConnection oa_objConnection)
{
oa_objConnection = null ;
string strConnStr = "";
try
{
strConnStr = "server=" + m_objIni.GetProperty("server") + ";uid="
+ m_objIni.GetProperty("uid") + ";pwd=" + m_objIni.GetProperty("password")
+ ";database=" + a_strDatabase ;
oa_objConnection = new SqlConnection(strConnStr) ;
oa_objConnection.Open() ;
//log it
m_objLog.Write("数据库连接ok") ;
}
catch(SqlException e)
{
//log it
m_objLog.Write("数据库连接出错" , e) ;
#if DEBUG
Console.WriteLine(e.ToString()) ;
#endif//DEBUG
throw(e) ;
}
}
}//end class
二、条件编译
/// <summary>
/// 初始化
/// </summary>
private void Initialize()
{
try
{
m_objConnManager = new ConnManager(m_strIniFilePath , "./config/newsdata.ini") ;
log = new Log("./logs/newserver.log") ;
}
catch(Exception e)
{
#if DEBUG
Console.WriteLine("初始化" + e.Message) ;
#endif//DEBUG
throw(new Exception("初始化" + e.Message)) ;
}
}
三、断言(Assert)
/// <summary>
/// 存取m_strID的属性
/// </summary>
public string ID
{
get
{
return this.m_strID ;
}
set
{
#if DEBUG
//断言
Debug.Assert(value.Length % 2 == 0 , "分类id长度必须为偶数") ;
#endif
this.m_strID = value ;
}
}//end method
摘自:http://www.java3z.com/cwbwebhome/article/article2/2325.html?id=908
一、捕捉异常(try / catch /finally)
/// <summary>
/// 取得数据库连接
/// </summary>
/// <param name="a_strDatabase">数据库名</param>
/// <param name="oa_objConnection">输出参数,空数据库连接</param>
public void GetConnection(string a_strDatabase , out SqlConnection oa_objConnection)
{
oa_objConnection = null ;
string strConnStr = "";
try
{
strConnStr = "server=" + m_objIni.GetProperty("server") + ";uid="
+ m_objIni.GetProperty("uid") + ";pwd=" + m_objIni.GetProperty("password")
+ ";database=" + a_strDatabase ;
oa_objConnection = new SqlConnection(strConnStr) ;
oa_objConnection.Open() ;
//log it
m_objLog.Write("数据库连接ok") ;
}
catch(SqlException e)
{
//log it
m_objLog.Write("数据库连接出错" , e) ;
#if DEBUG
Console.WriteLine(e.ToString()) ;
#endif//DEBUG
throw(e) ;
}
}
}//end class
二、条件编译
/// <summary>
/// 初始化
/// </summary>
private void Initialize()
{
try
{
m_objConnManager = new ConnManager(m_strIniFilePath , "./config/newsdata.ini") ;
log = new Log("./logs/newserver.log") ;
}
catch(Exception e)
{
#if DEBUG
Console.WriteLine("初始化" + e.Message) ;
#endif//DEBUG
throw(new Exception("初始化" + e.Message)) ;
}
}
三、断言(Assert)
/// <summary>
/// 存取m_strID的属性
/// </summary>
public string ID
{
get
{
return this.m_strID ;
}
set
{
#if DEBUG
//断言
Debug.Assert(value.Length % 2 == 0 , "分类id长度必须为偶数") ;
#endif
this.m_strID = value ;
}
}//end method
摘自:http://www.java3z.com/cwbwebhome/article/article2/2325.html?id=908
相关文章推荐
- 两步实现Log4j记录java控制台输出的系统所有异常信息和自定义记录日志---->非常实用,强烈推荐阅读
- 0007_01 通过一个宏来控制输出中文还是英文的提示信息, 用#if - #else - #endif
- 将Debug调试信息输出到控制台或文件
- MFC程序中Debug模式下调试信息输出到控制台
- MFC中的控制台输出debug信息
- 利用 __FILE__, __LINE__输出debug信息
- 在线/不重启/不暂停的对Java应用进行Debug,通过程序打断点并输出断点信息
- 一个将调试信息输出到控制台的Log函数
- Window下Qt中用qDebug()输出调试信息到Console控制台的设置方法(转)
- 调用DOS实现窗口隐藏并且把DOS控制台下输出信息写入文件中保存 笔记.
- 3.8.3: 输出异常信息
- Spring_Hibernate中log4j不输出信息到控制台
- Debug技巧-------控制台程序或者应用程序输出错误到txt
- java--IO流-LineNumberReader,读取键盘录入,字符字节流转换,改变标准输入输出设备,异常的日志信息,系统信息
- Struts2-使用myeclipse时,控制台不输出timer拦截器中的信息的解决方案
- 集合框架_键盘录入学生信息按照总分排序后输出在控制台案例)
- Spring-Boot--日志操作全局异常捕获消息处理☞日志控制台输出+日志文件记录
- c#中重定向windows控制台程序的输出信息 - jinjazz - CSDNBlog
- 由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,或打开对每个 Microsoft .NET Framework SDK 文档的跟踪并检查服务器跟踪日志。