Hairball episodes show strong abdominal contractions and end with a hair mass or fluid; coughing is forceful exhalation, often ending in a swallow, with nothing produced.
Feline coughing is routinely mistaken for a failed hairball: the cat crouches low, extends the neck, and makes a raspy exhale, and repeats may signal asthma or bronchitis.
Record episodes on video for the vet; several dry heaves a month with no hairball output should not be assumed to be hairballs.
Frequent genuine hairballs also deserve action such as more brushing and checking for overgrooming; labored or open-mouth breathing is an immediate emergency.