运行线程时我的Try Catch块应该放在哪里?

Wil*_*lem 2 c# try-catch thread-safety

拿这个帖子:

Thread thread = new Thread(delegate()
            {
                //Code
            });

            thread.Start();
Run Code Online (Sandbox Code Playgroud)

它应该在thread.Start();内部还是内部:

Thread thread = new Thread(delegate()
            {
                try
                {
                    //Code
                }
                catch (Exception)
                {
                    //Code
                }
            });
Run Code Online (Sandbox Code Playgroud)

Bap*_*net 6

把它放在里面或外面是完全不同的.

如果你把它们放在thread.Start()电话周围,你可以检测到(根据这个页面:http://msdn.microsoft.com/en-us/library/system.threading.thread.start(v = vs.71).aspx)

  • ThreadStateException线程已经启动.
  • SecurityException调用方没有相应的SecurityPermission.
  • OutOfMemoryException没有足够的内存可用于启动此线程.
  • NullReferenceException此方法是在作为空引用的线程引用上调用的(在Visual Basic中为Nothing).

如果你把它放在里面,你将检测你将在你的线程中运行的代码中的异常.所以你想要的任何异常.