When I configure MicroBlaze without the hardware divider (USE_DIV=0), divide by zero exceptions are not flagged.
In the case of software divides, the GNU libraries (not a divide instruction) calculates the divide.
The GCC libraries do not flag the error as there is no well defined mechanism in C to present the exception to the user. There is nothing that tells the processor that the arithmetic and logical sequence it is executing is actually a soft IDIV.
In order for MicroBlaze to identify a divide by zero exception, it must be configured with the hardware divider (USE_DIV=1). The same holds true for the floating point hardware exceptions.