我做了一个控制台应用程序,它将数据插入到MySql后端,并从硬盘中读取序列号
要做到这一点,我必须将References
添加到MySql.Data和System.Managment。
我运行它的方法是从visual studio复制Debug
目录(我认为这是问题)并在另一台机器上运行.exe
文件。
当我在另一台机器上运行应用程序时,堆栈跟踪错误是:
PhDD >C:\Users\User\File\Indexer\WMI\Debug
Your key: 634685018347902535133
Exception getting SMART Object: reference not set to an instance of an object.
Exception in main thread: at System.ThrowHelper.ThrowArgumentOutOfRangeExcept
ion()
at System.Collections.Generic.List`1.get_Item(Int32 index)
at WMITest.Menu.Run() in C:\Users\fps700\Music\WMITest\Menu.cs:line 49
Updated HDD Stats at28/03/2012 18:46:57
我认为这个问题是因为引用了吗? 我通过在另一台机器上重新编译相同的代码检查了这些方法,当通过VS添加引用时,它可以工作。
有人可以指导我如何解决此问题吗? 欢呼阅读。
P.S。我尝试添加引用路径(通过右键单击项目,选择选项,然后选择引用路径并添加两个dll文件)
第49行bool conversion = int.TryParse(smartData[1].ToString(), out temp);
添加假int值后,只是为了确保转换不是新堆栈跟踪错误的错误:
PhDD >C:\Users\bborisov\Dropbox\Indexer\WMI\Debug
Your key: 634685018347902535133
Exception getting SMART Object reference not set to an instance of an object.
Exception in main thread: at System.ThrowHelper.ThrowArgumentOutOfRangeExcept
ion()
at System.Collections.Generic.List`1.get_Item(Int32 index)
at WMITest.Menu.Run() in C:\Users\fps700\Music\WMITest\Menu.cs:line 53
Updated HDD Stats at28/03/2012 19:00:24
第53行:
DBHandler.insertData(smartData[0].Trim(),
3, smartData[2], file.getKey());
答案 0 :(得分:4)
将代码放入以检查客户端PC上可能发生的错误情况的有效性,但不检查开发错误情况的有效性。您可以通过抛出异常或以更好的方式优雅地处理错误来处理错误。
以下是检查错误情况的代码
if (smartData == null)
throw new Exception("Smart data is null; aborting");
if (smartData.Any() == false)
throw new Exception("Smart data instance is valid but has no elements; aborting");
bool conversion = int.TryParse(smartData[1].ToString(), out temp);