程序运行一段时间关闭时候不知怎么回事抛异常
未处理 System.NullReferenceExceptionMessage="未将对象引用设置到对象的实例。"
Source="MySql.Data"
StackTrace:
在 MySql.Data.MySqlClient.NativeDriver.FetchDataRow(Int32 statementId, Int32 columns)
在 MySql.Data.MySqlClient.Driver.FetchDataRow(Int32 statementId, Int32 columns)
在 MySql.Data.MySqlClient.Driver.SkipDataRow()
在 MySql.Data.MySqlClient.ResultSet.Close()
在 MySql.Data.MySqlClient.MySqlDataReader.NextResult()
在 MySql.Data.MySqlClient.MySqlDataReader.Close()
在 MySql.Data.MySqlClient.MySqlConnection.Close()
在 MySql.Data.MySqlClient.MySqlConnection.Dispose(Boolean disposing)
在 System.ComponentModel.Component.Finalize()
InnerException:
--------------------编程问答-------------------- 调试吧,空对象引用,使用了不存在的对象 --------------------编程问答-------------------- 是在程序结束时 抛出的异常
也没有指示 报异常的地方 --------------------编程问答-------------------- 偶然问题?还是每次都出现这个问题
若是后者 必然是代码的问题 程序运行一段时间后 结束时 在vs中 添加到线程调试
直接debug吧 --------------------编程问答-------------------- 有时候调试下没问题,正式运行才会爆吧!你是不是用了多线程之类的。这种问题还是查查代码吧 --------------------编程问答-------------------- 是偶然问题
最郁闷的是现在还不知道 程序的报错关键所在 --------------------编程问答--------------------
是的 做的多线程操作的 --------------------编程问答-------------------- 多线程你就打log吧 --------------------编程问答-------------------- 和多线程没有什么关系吧
程序结束时 做了两种测试
1 是释放线程 再结束主程序
2 直接结主程序
大概十分钟后 再关闭程序 会报错(但是又不是每次报错) --------------------编程问答-------------------- 多线程不好调试而且你也不是每次能重现,打log可以记录错误原因,打吧~ --------------------编程问答-------------------- 我也出过这种错误,DB+多线程。就是多线程惹的祸。 --------------------编程问答--------------------
用日志记一下出错的地方。。
然后报错的地方该做非空判断的做判断 --------------------编程问答-------------------- 通过"未处理 System.NullReferenceException
Message="未将对象引用设置到对象的实例。"
是没有实例化的地方,你却去访问了某个属性,这个对象是null.
我诂计你是否已断开链接,结果你关闭程序时又想再一次断开一次链接,而这个对象已经是null,造成了你如上的结果.
--------------------编程问答-------------------- 楼上言之有理,可能是已经关了连接了,又去关了,建议所有关闭操作做到finally中 --------------------编程问答-------------------- 坐等正解。 --------------------编程问答--------------------
--------------------编程问答-------------------- 就是有空值嘛!如果跑了一段时间看下你那些数据是不是有空值出现了!从数据那部分着手处理下 --------------------编程问答--------------------
using System;
using System.Windows.Forms;
using CubeNS.UserManage;
using CubeNS.Controls;
using CubeNS.BackupAndClean;
using CubeNS.GoodsManage;
namespace CubeNS
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.Name);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}// 一步一步调试运行到这里报错
}
}
这个基本没有意义 最粗暴的做法 这里加个try catch 把错误存起来 最好把堆栈里的错误页提取出来 然后再分析 --------------------编程问答-------------------- 是在方法最后一步 运行结束 抛出的异常 log 根本捕获不了
这个 该怎么捕获呢 --------------------编程问答-------------------- 总算找到bug了 是mysql-connector-net-6.3.2 这个驱动有问题
换成mysql-connector-net-6.5.4 就好了
补充:.NET技术 , C#