C# 要抛出什么异常来指示子进程已冻结
问题1-实用性 我使用C# 要抛出什么异常来指示子进程已冻结,c#,exception,freeze,child-process,C#,Exception,Freeze,Child Process,问题1-实用性 我使用System.Diagnostics.process在C#应用程序中运行子进程。例如: Process process = new Process(); // ... StartInfo initialization here int timelimit_ms = 30000; process.Start(); if (!process.WaitForExit(timelimit_ms)) { // What exception to throw here? t
System.Diagnostics.process
在C#应用程序中运行子进程。例如:
Process process = new Process();
// ... StartInfo initialization here
int timelimit_ms = 30000;
process.Start();
if (!process.WaitForExit(timelimit_ms))
{
// What exception to throw here?
throw new Excpetion(
"An executing method exceeded the time limit of " + timelimit_ms.ToString() + "ms");
}
我当前正在抛出System.ComponentModel.Win32Exception
。但我不确定这是不是最好的选择。子进程是一个简单的命令行实用程序。那么第一个问题,在这种情况下应该抛出什么例外
问题2-理论的
这不是我第一次问自己该抛出什么异常。我也不知道如何挑选某一个简单的指导方针。在C#中有太多的异常,它们从一个名称空间深深地继承到另一个名称空间。第二个问题,如何决定在特定情况下抛出什么异常?异常如何?异常如何?我会考虑从代码中抛出。 如MSDN所述,此例外情况为: 当方法调用对的无效时引发的异常 对象的当前状态 因此,运行并等待进程的
函数的调用方
或对象
的使用者将收到函数执行失败的通知
若您想详细说明失败原因的声明,可以将其表达出来
- 或者在详细信息中(如果足够)
- 或者创建或拥有从
派生的自定义异常,并使用调用方外部可能需要的其他数据填充该异常invalidoOperationException
- 我会考虑从代码中抛出。
如MSDN所述,此例外情况为:
当方法调用对的无效时引发的异常
对象的当前状态
因此,运行并等待进程的
函数的调用方
或对象
的使用者将收到函数执行失败的通知
若您想详细说明失败原因的声明,可以将其表达出来
- 或者在详细信息中(如果足够)
- 或者创建或拥有从
派生的自定义异常,并使用调用方外部可能需要的其他数据填充该异常invalidoOperationException
但这取决于谁或什么将“读取”您的异常。如果您的异常不是异常,那么您可能应该采取不同的做法:-)您可以创建自己的异常。您可以创建自己的异常。