Vb.net 抛出StackOverflowException后继续执行

Vb.net 抛出StackOverflowException后继续执行,vb.net,exception-handling,automation,Vb.net,Exception Handling,Automation,我目前参与了一个软件测试项目,正在测试VB.NET中的一个封闭库,该库由于StackOverflowException而崩溃的可能性很小。 引发此异常的原因超出了我的控制范围。根据我的理解,如果不修复导致这种错误的代码,我将无法处理这种类型的错误,而这是我无法做到的 有没有办法限制StackOverflowException损坏应用程序的哪一部分,或者我需要为每个测试创建一个全新的过程来避免应用程序崩溃 Sub runTests() as boolean 'testObject1

我目前参与了一个软件测试项目,正在测试VB.NET中的一个封闭库,该库由于StackOverflowException而崩溃的可能性很小。 引发此异常的原因超出了我的控制范围。根据我的理解,如果不修复导致这种错误的代码,我将无法处理这种类型的错误,而这是我无法做到的

有没有办法限制StackOverflowException损坏应用程序的哪一部分,或者我需要为每个测试创建一个全新的过程来避免应用程序崩溃

Sub runTests() as boolean     
  'testObject1 will throw StackOverflowException
  testObject1.runTest()
  testObject2.runTest()
  testObject3.runTest()      
End Sub

“限制StackOverflowException会损坏应用程序的哪一部分”是什么意思?我可能有点不清楚,我的意思是如果有办法限制应用程序的某一部分可以使用的堆栈。我认为这与线程处理堆栈的方式更相关。如果一个线程使用本地堆栈,那么通过使用多个线程,这可能可以防止主线程状态退出?我想我可能需要研究VB如何处理它们的堆栈。堆栈溢出会损坏堆栈的每一个部分,因为如果没有它,调用过程时就没有存储堆栈指针的空间,就无法可靠地将值从堆栈中弹出以返回(因为它可能是一个无效位置),也无法分配局部变量,堆栈溢出是致命的。解决方案:联系该库的供应商,告诉他们正确地解决问题,或者找一个知道他们在做什么的人编写的其他库。谢谢您的解释。非常感谢!不幸的是,这不是一个可接受的解决方案,我们的应用程序的目的是验证此库并查找可能发生的故障。当发现故障时,应继续进行一系列测试。可能继续执行的唯一方法是将不同的测试划分为外部测试套件将要执行的独立程序?一种解决方案是运行,直到SO发生(它告诉您哪个特定测试失败),然后禁用该测试(因为您知道它失败了)并重新启动测试。另一种选择是将导致SO的测试移动到测试的末尾,以便在SO发生之前已经运行了所有其他内容。但是,如果不重新启动应用程序,就无法在SO之后继续执行。