如何从libtiff.net TIFFCP.exe捕获C#中的所有异常

时间:2018-10-30 04:32:43

标签: c#

如何从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获取错误?预先感谢。

1 个答案:

答案 0 :(得分:0)

如我所见,您尝试了两种不同的方法。正如其他人所说,代码B 不会给您任何异常,因为您无法捕获其他进程的异常。

如果查看source,则

代码A 不会返回任何内容。所以这很正常。从那里您有两种选择:从此源的 main 方法复制代码并管理自己的异常,或者从那里获取输出并管理错误。