【发布时间】:2011-08-30 17:51:47
【问题描述】:
我正在使用带有 C# 的 Visual Studio 2010。
当我使用 Start Debugging 工具 (F5) 时,一切似乎都运行良好。所以我构建了解决方案。
现在我关闭 Visual Studio 2010 并转到为程序保留“应用程序”的路径。当我双击该文件时,它可以正常运行程序。但是,当我点击 GUI 中的“保存”按钮时,它会保存文件但被我的 try/catch 块捕获。
为什么当我双击应用程序时会出现这种情况,但在运行 Visual Studio 2010 进行调试时却没有?
编辑:
try
{
StreamWriter sw2 = new StreamWriter(saveFile2.FileName);
List<string> universalLineList = new List<string>();
string file = saveFile2.FileName;
string[] splitFile = file.Split('\\');
string[] savedName = splitfile[6].Split('.');
int i = 1;
sw2.WriteLine(savedName[0]);
sw2.WriteLine("Created on: " + DateTime.Now.ToShortDateString() + " at: " + DateTime.Now.ToString("HH:mm:ss"));
sw2.WriteLine();
while (i < stepAndRepeatcounter)
{
sw2.WriteLine("Line: {0}", i);
i++;
}
sw.WriteLine();
foreach(var line in theUniversalList)
{
if (line.Name.ToUpper().Contains("FID"))
{
sw2.WriteLine("Fiducial: {0}, X: {1}, Y: {2}",
line.Name,
line.XPlacement,
line.YPlacement);
}
}
sw2.WriteLine("Placements: ");
foreach (var line in theUniversalList)
{
if (!line.Name.ToUpper().Contains("FID"))
{
sw2.WriteLine("Name: {0}, X: {1}, Y: {2}",
line.Name,
line.XPlacement,
line.YPlacement);
}
}
int j = 0;
sw2.WriteLine("Slots: ");
foreach (var line in theUniversalList)
{
if (!line.Name.ToUpper().Contains("FID"))
{
sw2.WriteLine("Slot: {0}, P/D: {1}, P/N: {2}",
j,
line.PartDescription,
line.PartNumber);
sw2.WriteLine("Slot: 22, P/D: Reject, P/N: {0}",
line.PartNumber);
j++;
}
}
sw2.Close();
}
catch (Exception)
{
MessageBox.Show("Could not format and save Universal-1 Placements", "Universal-1 Save Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
【问题讨论】:
-
您可能应该查看被捕获的异常以弄清楚这一点。告诉我们异常是什么,有人可能会很快弄清楚。
-
抛出的异常是什么?
-
我确定有一些 I/O 权限,因为在调试模式下都是可写的。
-
我对为什么它可以运行 Visual Studio 感到困惑,但是当我构建它并将构建的文件移动到另一台计算机(甚至是同一台计算机)上时,它除了保存部分之外它都可以工作..
-
看 - 不要使用“catch(Exception)”。至少使用“catch(Exception ex)”并给我们“ex.ToString()”的内容
标签: c# visual-studio-2010 debugging try-catch