You could try =iserror():
=IF(OR(ISERROR((G39/D39)*H39),G39*H39=0),"-",(G39/D39)*H39)
If (g39/d39)*h39 is an error, then this portion:
(G39/D39)*H39=0
will be an error and cause your formula to return an error.
Maybe rewriting the formula would help:
=IF(ISERROR((G39/D39)*H39),"-",IF((G39/D39)*H39=0,"-",(G39/D39)*H39))
or since dividing by D39 doesn't help in the second if:
=IF(ISERROR((G39/D39)*H39),"-",IF(G39*H39=0,"-",(G39/D39)*H39))