rigidbody.isKinematic error catch doesn't occur

Hello all,
I have two objects that are both rigid bodies and each have forces being applied to them in their respective scripts. When they collide, Unity applies force and torque to both objects as expected. The problem is that I don’t want this to happen to one of the two objects (I will refer to this object as “player”). At first I tried to regain control of the player object by doing this:

	void OnCollisionEnter(Collision aCollision){
		StartCoroutine(toggleKin());
	}

	IEnumerator toggleKin(){
		rigidbody.isKinematic = true;
		yield return 0; //Waits one frame.
		rigidbody.isKinematic = false;
		yield return 0;
	}

This worked most of the time, but sometimes the player object would still rotate uncontrollably. I’m now trying to catch the error when I set the velocity to the player object after isKinematic has been set to true, but the game pauses the moment it hits the error and my catch is never called.

using System;
using UnityEngine;
using System.Collections;



public class PlayerControls : MonoBehaviour {

    private float currentSpeed;

    void OnCollisionEnter(Collision aCollision){
        rigidbody.isKinematic = true;
    }

    void FixedUpdate () {
        try{
            rigidbody.velocity = currentSpeed * transform.forward;
        }catch(Exception e){
            rigidbody.isKinematic = false;
            rigidbody.velocity = currentSpeed * transform.forward;
        }
    }
}

Is there something wrong with my try/catch statement? Can this be done at all? If not, can someone suggest another way of approaching the problem? The only thing else I could think of doing is cranking up the angular drag but I have no way of knowing when to set it back to 0.

You could simply cache the current position, rotation and velocity and apply that back to the player.