如何捕获TimeoutException?
3秒后,我想在执行SearchProgram时捕获TimeoutException。 但是,在3秒钟后,尽管它在控制台上打印出“ TimeoutException”,但没有捕获TimeoutException。
谢谢
public static void work()
{
Thread.Sleep(3000);
Console.WriteLine("TimeoutException");
throw new TimeoutException();
}
public static void Main(string[] args)
{
try
{
ThreadStart th = new ThreadStart(work);
Thread t = new Thread(th);
t.Start();
//Execute SearchProgram
t.Abort();
}
catch (ThreadInterruptedException)
{
Console.WriteLine("It's too long. Timeout!");
}
Console.WriteLine("Result : ~~~");
}
答案 0 :(得分:1)
正如其他人已经说过的那样,您没有抓住好例外。但这不是预期的答案,因为一个线程的错误无法从另一个线程捕获。
有几种处理这种情况的方法,可以在本answer中找到。
您的案例的示例:
git checkout develop <commit hash>_or_<specific-files-path>
答案 1 :(得分:0)
您可能正在捕获错误的异常。根据Microsoft文档(https://docs.microsoft.com/fr-fr/dotnet/api/system.timeoutexception?view=netframework-4.8),您应该捕获TimeOutException类。