似乎是一个相对容易的问题,但我已经尝试了一些事情,并且无法弄清楚如何捕获内存类型的异常。以下是我尝试的一些事情:
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 - 不,我不能避免这种类型的异常,因为我的应用程序是,并且需要能够在旧机器上运行。
答案 0 :(得分:2)
首先,这不是你如何处理给定类型的异常。相反,您捕获类型:
try
…
catch ex as OutOfMemoryException
…
end try
其次,您通常不处理OutOfMemoryException
。你不能,因为你已经内存不足,在大多数情况下你无能为力,除了(小心地,没有分配更多的内存)记录错误。
OutOfMemoryException
(和StackOverflowException
)是致命的:当它被抛出时,系统会通知你一个错误,但实际上没有给你机会修复它。
在极少数情况下,您可以尝试释放一些已分配但不再需要的内存。但是,特别是在垃圾收集的.NET世界中,这是一种非常罕见的情况。