gpt4 book ai didi

c# - 忽略错误并在 C# 中继续

转载 作者:行者123 更新时间:2023-11-30 13:23:01 24 4
gpt4 key购买 nike

我试图在 C# 中打开 3 个程序,但是,如果发生错误,我仍然希望代码继续。换句话说,如果程序 1 出现问题,程序 2 和 3 仍应尝试打开。我也不想检查文件是否存在,因为程序进行了一些切换,任何事情都可能失败。
如果程序 1 失败,下面的代码将失败。如何忽略任何错误并继续执行代码?

try
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
//Program 1
Process x = Process.Start("\"C:\\Program Files\\Company\\Office\\MyProgram1.EXE\" /runtime \"C:\\Program Files\\Company\\Config.xml\" /cmd RunServer");
//Program 2
Process x = Process.Start("\"C:\\Program Files\\Company\\Office\\MyProgram2.EXE\" /runtime \"C:\\Program Files\\Company\\Config.xml\" /cmd RunServer");
//Program 3
Process x = Process.Start("\"C:\\Program Files\\Company\\Office\\MyProgram3.EXE\" /runtime \"C:\\Program Files\\Company\\Config.xml\" /cmd RunServer");
}
catch {}

最佳答案

为每个进程单独的 Try...Catch 可能是最好的方法。但是,如果您可以有任意数量的程序,则可以使用 foreach 循环,而不是为每次调用手动编写 Try...Catch

List<Action> processesToCall = new List<Action>();  

string path = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
processesToCall.Add(() => Process.Start("\"C:\\Program Files\\Company\\Office\\MyProgram1.EXE\" /runtime \"C:\\Program Files\\Company\\Config.xml\" /cmd RunServer"));
processesToCall.Add(() => Process.Start("\"C:\\Program Files\\Company\\Office\\MyProgram2.EXE\" /runtime \"C:\\Program Files\\Company\\Config.xml\" /cmd RunServer") );
processesToCall.Add(() => Process.Start("\"C:\\Program Files\\Company\\Office\\MyProgram3.EXE\" /runtime \"C:\\Program Files\\Company\\Config.xml\" /cmd RunServer") );

foreach(Action a in processesToCall)
{
try
{
a();
}
catch
{
//log (or whatever you want to do with it)
}
}

这样您就不必为每个操作编写 Try...Catch block ,因此可以更轻松地添加更多操作。

关于c# - 忽略错误并在 C# 中继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15588249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com