Trying to destroy instances of Rigidbody2D

Been trying lots of things but no joy trying to Destroy individual instances of a cloned Rigidbody2D.

Error:
MissingReferenceException: The object of type ‘Rigidbody2D’ has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
BallEmitter.Update () (at Assets/BallEmitter.cs:18)

Please can someone explain why this happening. Do I need to instantiate a new gameObject for each Rigidbody2D or something? Thanks.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class BallEmitter : MonoBehaviour {

	public Rigidbody2D ball;
	public float max;
	public float min;
	public List<Rigidbody2D> balls = new List<Rigidbody2D>();

	void Start () {
		InvokeRepeating ("ThrowBall", 0.0f, 0.8f);
	}

	void Update () {
		foreach (var ball in balls) {
			if (ball.transform.position.y < -4) {
				Destroy (ball.gameObject);
			}
		}
	}

	void ThrowBall() {
		Rigidbody2D ballInstance;
		ballInstance = Instantiate (ball, transform.position, transform.rotation) as Rigidbody2D;
		ballInstance.isKinematic = false;
		ballInstance.AddForce (-Vector3.right * Random.Range(min,max));
		balls.Add (ballInstance);
	}
}

This is because you are destroying the rigidbody components but not removing them from the list, so the next frame occurs, you are still trying to delete components that no longer exist.

Another note is that this code destroys the rigid body components and not the game object, so you may want to swap it to destroy the game object instead otherwise you will end up with logs of game objects in your scene that are never removed.