![]() |
1
2
将程序分成工作进程和单个服务器进程。服务器进程将处理初始请求,然后将它们从工作进程中分发出去。如果工作进程崩溃,则仅影响该工作进程上的用户。不要将SEH用于一般的异常处理——正如您已经发现的,它可以并且将使您完全处于死锁状态,而且您仍然可以崩溃。 |
![]() |
2
3
使用SEH是一个坏主意,因为你的程序随机崩溃。这不是魔法小精灵灰尘,你可以撒在你的程序,使它停止崩溃。跟踪并修复导致崩溃的错误是正确的解决方案。 当您真正需要处理结构化异常时,可以使用SEH。拉里·奥斯特曼做了一篇后续文章解释 what situations require SEH: memory mapped files, RPC, and security boundary transitions . |
![]() |
3
1
修复程序中的错误?;) 就我个人而言,我会将SEH处理程序保留在其中,让它们转储一个调用堆栈,其中包含访问冲突或发生的任何情况,并解决问题。“有时服务器挂起”问题可能是由于具有SEH异常的线程导致的死锁导致的,因此不太可能与您正在使用SEH本身相关。 |