我正在制作一个程序,需要输出发生的任何错误,但要及时,这是一个密码恢复程序。
如何将异常文本变量(可能是字符串)更改为仅实际异常减去所有不需要的东西。
catch(Exception EX)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("AN ERROR OCCURED IN COPYING CHROMEPASSFILE: " + EX);
Console.ForegroundColor = ConsoleColor.Green;
}
输出:
AN ERROR OCCURED IN COPYING CHROMEPASSFILE: System.IO.IOException: The file 'C:\Users\Anonymous\Desktop\E_TEST\logindata.' already exists.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
at System.IO.File.Copy(String sourceFileName, String destFileName)
at Recover_All_Passwords.Program.Main(String[] args) in C:\Users\Anonymous\Documents\Visual Studio 2015\Projects\Recover_All_Passwords\Recover_All_Passwords\Program.cs:line 27
如何只输出第一行而不输出#34; At(s)"?
注意到异常标记说,我引用"异常是很少发生(异常!)条件,需要偏离程序的正常流程。&# 34;
修改
是的,堆栈跟踪非常有用,但是我只需要错误消息,因为用户除了实际失败之外什么都不会感兴趣。
答案 0 :(得分:4)
不要使用EX
,而是使用Exception上的Message
属性。
所以你的代码变成了:
Console.WriteLine("AN ERROR OCCURED IN COPYING CHROMEPASSFILE: " + EX.Message);
为了将来参考,“at(s)”是StackTrace,非常可用于确定应用程序的中断点。