Erro estranho

O meu problema é o seguinte tenho esse pedaço que guarda um objecto em ficheiro

[code] static Socio user = new Socio ();
static Jogo game = new Jogo();
static File fSocio = new File(“Socios.dat”); // cria um novo ficheiro com o nome de socios e extenção dat
static File fGame = new File(“Games.dat”); // cria um novo ficheiro com o nome de games e extenção dat

//Escreve o ficheiro socios.dat
public static void WriteSocio(ArrayList <Socio> lista) { 
	ArrayList <Socio> listSocio = new ArrayList <Socio> ();
	listSocio = lista;
	try{
		FileOutputStream fos = new FileOutputStream (fSocio);	//Cria o caminho para o ficheiro
		ObjectOutputStream oos = new ObjectOutputStream (fos);	//Define o tipo de dados que será guardado no ficheiro
		try{
			for(int i = 0; i<listSocio.size();i++){
				user = listSocio.get(i);
				oos.writeObject(user);							//Escreve o objecto obtido anteriormente no ficheiro
			}
		}catch (Exception e){
			System.out.println ("Erro ao inserir o sócio no ficheiro");
			System.out.println (e.getMessage());				//Indica onde o erro ocorre
			System.out.println (e.getCause());					//Indica qual a causa do erro
		}
		oos.close();											//serve para fechar os fluxos entre o programa e o ficheiro
		fos.close();											//de forma a garantir a preservação dos dados
	}catch (IOException ioe){
		System.out.println ("Erro ao escrever o ficheiro Socios.dat");
	}
}[/code]

Até aqui tudo bem!!

Agora aqui fica estranho

[code] static Socio user = new Socio ();
static Jogo game = new Jogo();
static File fSocio = new File(“Socios.dat”); // cria um novo ficheiro com o nome de socios e extenção dat
static File fGame = new File(“Games.dat”); // cria um novo ficheiro com o nome de games e extenção dat

//Escreve o ficheiro socios.dat
public static void WriteSocio(ArrayList <Socio> lista) { 
	ArrayList <Socio> listSocio = new ArrayList <Socio> ();
	listSocio = lista;
	try{
		FileOutputStream fos = new FileOutputStream (fSocio);	//Cria o caminho para o ficheiro
		ObjectOutputStream oos = new ObjectOutputStream (fos);	//Define o tipo de dados que será guardado no ficheiro
		try{
			for(int i = 0; i<listSocio.size();i++){
				user = listSocio.get(i);
				oos.writeObject(user);							//Escreve o objecto obtido anteriormente no ficheiro
			}
		}catch (Exception e){
			System.out.println ("Erro ao inserir o sócio no ficheiro");
			System.out.println (e.getMessage());				//Indica onde o erro ocorre
			System.out.println (e.getCause());					//Indica qual a causa do erro
		}
		oos.close();											//serve para fechar os fluxos entre o programa e o ficheiro
		fos.close();											//de forma a garantir a preservação dos dados
	}catch (IOException ioe){
		System.out.println ("Erro ao escrever o ficheiro Socios.dat");
	}
}

//Escreve o ficheiro Games.dat
public static void WriteGame(ArrayList <Jogo> lista){
	ArrayList <Jogo> listGame = new ArrayList <Jogo>();
	listGame = lista;
	try{
		FileOutputStream fos = new FileOutputStream (fGame);
		ObjectOutputStream oos = new ObjectOutputStream (fos);
		try{
			for(int i = 0; i<listGame.size();i++){
				game = listGame.get(i);
				oos.writeObject(game);    				
			}
		}catch (Exception e){
			System.out.println ("Erro ao inserir o jogo no ficheiro");
			System.out.println (e.getMessage());
			System.out.println (e.getCause());
		}
		oos.close();
		fos.close();
	}catch (IOException ioe){
		System.out.println ("Erro ao escrever o ficheiro Games.dat");
	}
}[/code]

O Erro e de tar tentando guardar um objecto null, mas antes que me digam que não tem mistério já fiz um println ao objecto game e ele está preenchido dai a minha duvida será que me esta escapando algo???

[]'s