C# 要抛出什么异常来指示子进程已冻结

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

问题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?
  throw new Excpetion(
    "An executing method exceeded the time limit of " + timelimit_ms.ToString() + "ms");
}
我当前正在抛出
System.ComponentModel.Win32Exception
。但我不确定这是不是最好的选择。子进程是一个简单的命令行实用程序。那么第一个问题,在这种情况下应该抛出什么例外

问题2-理论的


这不是我第一次问自己该抛出什么异常。我也不知道如何挑选某一个简单的指导方针。在C#中有太多的异常,它们从一个名称空间深深地继承到另一个名称空间。第二个问题,如何决定在特定情况下抛出什么异常?

异常如何?

异常如何?

我会考虑从代码中抛出。 如MSDN所述,此例外情况为:

当方法调用对的无效时引发的异常 对象的当前状态

因此,运行并等待进程的
函数的调用方
对象
的使用者将收到函数执行失败的通知

若您想详细说明失败原因的声明,可以将其表达出来

  • 或者在详细信息中(如果足够)

  • 或者创建或拥有从
    invalidoOperationException
    派生的自定义异常,并使用调用方外部可能需要的其他数据填充该异常


    • 我会考虑从代码中抛出。 如MSDN所述,此例外情况为:

      当方法调用对的无效时引发的异常 对象的当前状态

      因此,运行并等待进程的
      函数的调用方
      对象
      的使用者将收到函数执行失败的通知

      若您想详细说明失败原因的声明,可以将其表达出来

      • 或者在详细信息中(如果足够)

      • 或者创建或拥有从
        invalidoOperationException
        派生的自定义异常,并使用调用方外部可能需要的其他数据填充该异常

      实际上,我会在描述正在发生的事情时抛出一个

      理论上,如果快速谷歌/读取文档不会引发一个已经描述了发生了什么的异常,那么您可以扩展该异常来生成一个奇怪的异常,有时会在MyApplication异常中出现

      但这取决于谁或什么将“读取”您的异常。如果你的异常不是异常,那么也许你应该做不同的事情:-)

      实际上,我会抛出一个

      理论上,如果快速谷歌/读取文档不会引发一个已经描述了发生了什么的异常,那么您可以扩展该异常来生成一个奇怪的异常,有时会在MyApplication异常中出现


      但这取决于谁或什么将“读取”您的异常。如果您的异常不是异常,那么您可能应该采取不同的做法:-)

      您可以创建自己的异常。您可以创建自己的异常。