如何捕获内存异常vb.net

时间:2014-06-26 13:22:25

标签: vb.net out-of-memory

似乎是一个相对容易的问题,但我已经尝试了一些事情,并且无法弄清楚如何捕获内存类型的异常。以下是我尝试的一些事情:

try

catch ex as exception

if ex = outOfMemoryException then

' do something here

end if

end try



try

catch ex as exception

dim check as new outOfMemoryException

if ex = check then

' do something here

end if

end try

当抛出内存不足异常时,我使用它来显示某条消息,因此在抛出异常时能够捕获此类异常是理想的(如果可能的话)。

p.s - 不,我不能避免这种类型的异常,因为我的应用程序是,并且需要能够在旧机器上运行。

1 个答案:

答案 0 :(得分:2)

首先,这不是你如何处理给定类型的异常。相反,您捕获类型:

try
    …
catch ex as OutOfMemoryException
    …
end try

其次,您通常处理OutOfMemoryException。你不能,因为你已经内存不足,在大多数情况下你无能为力,除了(小心地,没有分配更多的内存)记录错误。

OutOfMemoryException(和StackOverflowException)是致命的:当它被抛出时,系统会通知你一个错误,但实际上没有给你机会修复它。

在极少数情况下,您可以尝试释放一些已分配但不再需要的内存。但是,特别是在垃圾收集的.NET世界中,这是一种非常罕见的情况。