如何从libtiff.net TIFFCP.exe捕获C#中的所有异常 我想从TTIFFCP.exe(合并,拆分)获取异常,例如DirectoryNotFoundException,FileNotFoundException ... 我可以在visula Studio调试器窗口中看到这些错误,但它没有通过catch块。
我尝试过这些(我故意犯了一个错误)
<pre><code>
<hr/>
Code A :
string[] arguments =
{
@"Sample Data\EEEEEEE.tif",
@"Sample Data\marbles.tif",
"MergeTiffImages.tif"
};
TiffCP.Program.Main(arguments);
===> nothing return
<hr/>
Code B :
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @"TiffCP.exe";
string path1 = @"Sample Data\EEEEEEE.tif";
string path2 = @"Sample Data\marbles.tif";
string path3 = "MergeTiffImages.tif";
p.StartInfo.Arguments = "\"" + path1 + "\"" + ", \"" + path2 + "\"" + ", \"" + path3 + "\"";
p.Start();
string t = p.StandardOutput.ReadToEnd();
===> string t => ""
<hr/>
Code C :
Process myProcess = new Process();
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(@"TiffCP.exe");
string path1 = @"Sample Data\EEEEEEE.tif";
string path2 = @"Sample Data\marbles.tif";
string path3 = "MergeTiffImages.tif";
myProcessStartInfo.StartInfo.Arguments = "\"" + path1 + "\"" + ", \"" + path2 + "\"" + ", \"" + path3 + "\"";
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardError = true;
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
StreamReader myStreamReader = myProcess.StandardError;
string t = myStreamReader.ReadLine();
myProcess.Close();
===> string t => Open: Failed to open "Sample Data\EEEEEEE.tif"
</code></pre>
但它没有通过catch块
是否可以从TIFFCP.exe获取错误?预先感谢。
答案 0 :(得分:0)
如我所见,您尝试了两种不同的方法。正如其他人所说,代码B 不会给您任何异常,因为您无法捕获其他进程的异常。
如果查看source,则代码A 不会返回任何内容。所以这很正常。从那里您有两种选择:从此源的 main 方法复制代码并管理自己的异常,或者从那里获取输出并管理错误。