【问题标题】:Catch error from script after command line call命令行调用后从脚本中捕获错误
【发布时间】:2023-03-23 17:32:01
【问题描述】:

我试图弄清楚如何捕获调用此 Sikuli 脚本时发生的任何错误。它启动一个 Sikuli 脚本,该脚本执行大量任务,通常运行大约两个小时。如果在此期间发生任何错误,我需要能够检测到它,然后重新运行脚本。我知道如何重新运行脚本,但我不确定如何检测它在运行时是否发生错误。

Process Sikulix_Login_Process = new Process();
ProcessStartInfo Sikulix_Login_StartInfo = new ProcessStartInfo();
Sikulix_Login_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Sikulix_Login_StartInfo.FileName = "cmd.exe";
Sikulix_Login_StartInfo.Arguments = "/c java -jar \"PathToSikuliJarFile\" -r \"PathToSikuliScript\"";

Sikulix_Login_Process.StartInfo = Sikulix_Login_StartInfo;
Sikulix_Login_Process.Start();

【问题讨论】:

    标签: c# sikuli


    【解决方案1】:

    Process 类有两个事件来监视进程的输出,在本例中为 cmd.exe。这两个事件是 ErrorDataReceived 和 OutputDataReceived。如果脚本正在向 stdout 或 stderr 写入文本,它将被发送到这些事件的订阅。另一种选择是使用方法 WaitForExit() 和属性 ExitCode 来等待进程完成,然后检查它的 ExitCode。希望对您有所帮助!

    【讨论】:

      【解决方案2】:

      正确的方法是使用标准语言工具(如try ... catch)从脚本中处理错误,而不是尝试控制 jar 执行。如果代码本身存在特定问题,请发布示例,以便我们与特定案例相关。

      【讨论】:

        猜你喜欢
        • 2019-12-19
        • 2016-12-02
        • 1970-01-01
        • 2011-06-13
        • 2015-04-14
        • 1970-01-01
        • 2021-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多