Qué me vas a contar, cuando algo no sale no sale. Ahí lo mejor es irse a dar una vuelta y desconectar un poco.
Por cierto, tu error en el código original era que el índice de la coma era siempre el de la primera coma, así que a partir de la segunda letra estabas haciendo una substring que tenía el origen después del final, de ahí la excepción de StringIndexOutOfBounds (en la propia documentación del API te lo dice: StringIndexOutOfBoundsException - if start or end are negative or greater than length(), or start is greater than end.).
Pero vamos, para eso usa el split que es lo más eficiente.