'Sera a tutti

Conscio del fatto che mysql_query non può essere "catchata" anche tramite la gestione personalizzata degli errori, mi sono creato questa funzione:

codice:
function query($query)
{
	$q = @mysql_query($query, $conn);
	if (!$q)
	{
		throw new Exception("DB::query | errore mysql(".mysql_errno()."): ".mysql_error());
	}
	return $q;
}
che putroppo non zittisce mysql_query! In altre parole continuo ad ottenere il classico errore mysql e quell'eccezione non è mai sollevata. Specifico che la query è di tipo INSERT, quindi dovrebbe ritornare TRUE se ok altrimenti FALSE (come nel mio caso).
Com'è possibile secondo voi?