Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms Winform GUI线程-是否应该有一个catch块?_Winforms_Multithreading_Exception Handling - Fatal编程技术网

Winforms Winform GUI线程-是否应该有一个catch块?

Winforms Winform GUI线程-是否应该有一个catch块?,winforms,multithreading,exception-handling,Winforms,Multithreading,Exception Handling,我在这里读到: 还有一些地方,每个线程都应该有一个catch块。在winforms的上下文中,我不太理解这一点。winforms也是这样吗?我知道工作线程应该有一个catch块。但是,我在UI(主)线程上有多个catch块,它们总是调用我的私有HandleError方法来传递异常。然后,此方法将关注如何向用户显示错误。因此,假设我在button1\u click处理程序中有一个try/catch块,在另一个button2\u click处理程序中有另一个try/catch块。这是一种好的做法吗?

我在这里读到:
还有一些地方,每个线程都应该有一个catch块。在winforms的上下文中,我不太理解这一点。winforms也是这样吗?我知道工作线程应该有一个catch块。但是,我在UI(主)线程上有多个catch块,它们总是调用我的私有HandleError方法来传递异常。然后,此方法将关注如何向用户显示错误。因此,假设我在button1\u click处理程序中有一个
try/catch块,在另一个button2\u click处理程序中有另一个try/catch块。这是一种好的做法吗?有人能告诉我我是否应该做些不同的事情吗。谢谢。

我不知道使用try/catch块有什么真正的“规则”。虽然我不是一个大试块的粉丝。在可能出现异常的代码点/代码行上明智地使用它们。

我认为您应该将该规则理解为“每个线程至少应该有一个catch块”。每个线程,当然也包括主线程,都应该在适当的地方使用catch块。

要补充的是……我知道可以使用每个线程和appdomain的全局钩子捕获未处理的异常。我的收获是:为工作线程提供一个try/catch块。主线程可以有多个try/catch块。