Re[2]: Java + Exception в конструкторе.
От: Blazkowicz Россия  
Дата: 12.05.04 05:42
Оценка: 1 (1)
Вот пример, если интересно:
public class MemTest
{
    private static boolean gc = false;

    public MemTest(Object[] store)
    {
        store[0] = this; //Сохраняем ссылку на объект
        throw new RuntimeException(); //Бросаем исключение
    }

    public static void main(String[] args)
    {
        Object[] store = new Object[1]; //Создаём хранилище
        try
        {
            new MemTest(store); //Пытаемся создать объект
        }
        catch(Exception e)
        {
            System.out.println("Exception");//Произошло исключение
            System.out.println("Object: " + store[0]); //Имеем ссылку на объект не null
            //Убиваем ссылку, чтобы объект ыл доступен мусорщику
            store[0] = null;
        }
        //Пока объект не собран
        while(!gc)
        {
            try
            {
                Thread.sleep(200);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();  
            }
            // Пытаемся разбудеить GC
            System.gc();
        }
    }
    //Метод вызывается перед тем как объект будет удален из памяти.
    protected void finalize() throws Throwable
    {
        System.out.println("Collecting...");
        gc = true;
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.