java.lang.OutOfMemoryError 怎样才能不让程序退出
我要测试一个 包里面的方法打开一些文件的时间。。但有些文件那个方法是无法打开的,用for循环打开,关闭。但到那个无法打开的文件时候会报java.lang.OutOfMemoryError,然后程序会退出。怎么才能不要退出程序,只是打印出 无法打开,而继续打开下一个文件。
另外开一个线程来打开?可是报java.lang.OutOfMemoryError的时候 是线程死了,还是整个程序都会退出?
[解决办法]
当发生一些意外状况时,java本身会抛出异常或者错误。其下面的语句将不再执行,如果你的程序中有相应的try{}catch(){}程序,则会执行catch中的语句。否则,会直接跳出这个方法,如果跳出,并且调用这个方法的方法也没有try{}catch(){},那么会继续往上抛,直到最终的main函数仍没有catch,当然就直接停止整个程序的运行了。
另外catch一般捕获的是异常,而OutOfMemoryError是错误,比异常级别高。我没试过是否可以直接catch这个东西。你试试吧。
[解决办法]
try{......}catch(OutOfMemoryError ex){}
不过这不是一个好做法,你应该在打开这个文件之前,用其它方式检测一下。