My raycasting script stops on error in play mode and i can't find out why

Hi, im new to unity and im trying to implement a weapon into my 2d top down shooter, which hits enemies via raycast and with an explosion on hit, or mouse position if player missed an enemy, using this script

public class Player_MagdoomShooting : MonoBehaviour
{
    public Transform MagdoomCannonmuzzle;

    public Transform player;

    public LayerMask enemyLayer;

    public float blastRadius = 1f;

    private float ContactPointDistance;

    private Vector3 mousePos;

    void Update()
    {
        mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Vector2 direction = mousePos - MagdoomCannonmuzzle.position;
        ContactPointDistance = Vector2.Distance(MagdoomCannonmuzzle.position, mousePos);
        if (Input.GetButtonDown("Fire2"))
        {
            Debug.DrawRay(MagdoomCannonmuzzle.position, direction, Color.yellow, ContactPointDistance);
            RaycastHit2D hitInfo = Physics2D.Raycast(MagdoomCannonmuzzle.position, direction, ContactPointDistance);
            if (hitInfo.collider.gameObject.CompareTag("enemy"))
            {
                Collider2D[] explosion = Physics2D.OverlapCircleAll(hitInfo.rigidbody.ClosestPoint(MagdoomCannonmuzzle.position), blastRadius, enemyLayer);
                foreach(Collider2D enemy in explosion)
                {
                    Debug.Log(enemy.name + " was hit by explosion");
                }
                Debug.Log(hitInfo.transform.name + " was hit by ray");
            }
            else if (hitInfo.collider.gameObject.CompareTag("enemyBullet"))
            {
                Collider2D[] explosion = Physics2D.OverlapCircleAll(hitInfo.rigidbody.ClosestPoint(MagdoomCannonmuzzle.position), blastRadius, enemyLayer);
                foreach (Collider2D enemy in explosion)
                {
                    Debug.Log(enemy.name + " was hit by explosion");
                }
                Debug.Log(hitInfo.transform.name + " was hit by ray");
            }
            else
            {
                Collider2D[] explosion = Physics2D.OverlapCircleAll(mousePos, blastRadius, enemyLayer);
                foreach (Collider2D enemy in explosion)
                {
                    Debug.Log(enemy.name + " was hit by explosion");
                }
            }
        }
    }
}

For a reason i can’t understand it works fine only if it hits something. if ray doesn’t hit anything game gets error paused but console writes no message. It has to be something in “If” part, because it works without it.

Fixed it. It was NullExpeption type of poblem. Rewrote script to this

void Update()
    {
        mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Vector2 direction = mousePos - MagdoomCannonmuzzle.position;
        ContactPointDistance = Vector2.Distance(MagdoomCannonmuzzle.position, mousePos);
        if (Input.GetButtonDown("Fire2"))
        {
            Debug.DrawRay(MagdoomCannonmuzzle.position, direction, Color.yellow, ContactPointDistance);
            RaycastHit2D hitInfo = Physics2D.Raycast(MagdoomCannonmuzzle.position, direction, ContactPointDistance);
            if (hitInfo)
            {
                Debug.Log(hitInfo.transform.name + " was hit by ray");
                if (hitInfo.collider.gameObject.CompareTag("enemy"))
                {
                    Debug.Log(hitInfo.transform.name + " will suffer damage");
                    Collider2D[] explosion = Physics2D.OverlapCircleAll(hitInfo.rigidbody.ClosestPoint(MagdoomCannonmuzzle.position), blastRadius, enemyLayer);
                    foreach (Collider2D enemy in explosion)
                    {
                        Debug.Log(enemy.name + " was hit by explosion");
                    }
                }
                else if (hitInfo.collider.gameObject.CompareTag("enemyBullet"))
                {
                    Debug.Log(hitInfo.transform.name + " will suffer damage");
                    Collider2D[] explosion = Physics2D.OverlapCircleAll(hitInfo.rigidbody.ClosestPoint(MagdoomCannonmuzzle.position), blastRadius, enemyLayer);
                    foreach (Collider2D enemy in explosion)
                    {
                        Debug.Log(enemy.name + " was hit by explosion");
                    }
                }
            }
            else
            {
                Collider2D[] explosion = Physics2D.OverlapCircleAll(mousePos, blastRadius, enemyLayer);
                foreach (Collider2D enemy in explosion)
                {
                    Debug.Log(enemy.name + " was hit by explosion");
                }
            }
        }
    }