Pode-se usar CX_ROOT para capturar qualquer exceção derivada, como CX_SY_ZERODIVIDE. No entanto, é necessário utilizar CX_SY_ZERODIVIDE e muitas outras classes derivadas para lidar de forma diferente com cada exceção. Isso depende das suas necessidades. Por exemplo, se estiver realizando operações aritméticas, provavelmente terá diferentes possibilidades de exceção (divisão por zero, overflow aritmético)... Você pode simplesmente exibir uma mensagem de erro (nesse caso, a captura de CX_ROOT será suficiente) ou pode realizar um tratamento de erro mais sofisticado, como preencher algum campo com '#DIV POR 0#' ou '#SOBREFLUJO#'...
Espero que isso ajude a resolver sua dúvida.
Além disso, lembre-se de que uma subclasse PODE ser definida como RESUMABLE, embora CX_ROOT não o seja. Portanto, você pode usar a instrução RESUME com algumas exceções derivadas, mas não com CX_ROOT.