If you want to formalize a division operation that returns a sentinel value $null$ for "no output", then you should also expand the domain of the function representing that operation to $R'=ℝ∪\{null\}$ and define $div : R'×R'→R'$ via:
$(x,y) = x/y$ for each $x∈ℝ$ and $y∈ℝ∖\{0\}$.
$(x,y) = null$ for each $x∈ℝ$ and $y = 0$.
$(x,y) = null$ for each $x,y∈R'$ such that $x = null$ or $y = null$.
The first part captures the standard division. The second captures "no answer for division by zero". The third is the usual null-propagation (i.e. if an input is missing then the output is missing too).
Beware that there are tons of different meanings for "$null$" and this is just one common one that is incompatible with the meaning of null in object-oriented programming languages that support comparison between null pointers. In contrast, any semantics that has null-propagation should also stipulate that "$null=null$" evaluates to $null$. For instance, "$1/0 = 0/0$" evaluates to $null$ as desirable.
Note that the meaning of $null$ used here is compatible with the formalization of partial functions as standard functions that may map an input to $null$, and composition of these maybe-$null$ functions exactly match the composition of the original partial functions. But many logicians do not like this extra $null$ possibility, and it's usually mathematically cleaner to stick to standard functions.