Division by zero creates an answer that is beyond the range of whatever finite field number set you are using. It must generate an exception as it cannot be solved with the range of numbers that the machine is using.
Always remember that all math you do within a software program has to play nicely within the defined boarders of the number sets used by the compiler. The program fails if it traverses outside of this boundary.
The resulting NaN and exception (eg. fault signal) is correct and should not be changed.
(Note: I am not including mathematical modelling languages which may have some concept of a non-finite number field.. not aware of any existing anyways...)