Now String::Cat() as many U++ functions calls SysAllocRaw() to allocate a String.
However if requested size is too big, SysAllocRaw() unconditionally shows a panic message and stops the program.
I propose you to throw an exception in this case, so that the main program can handle this properly.
In the old days we did this :
char *a = malloc(size);
if (a == 0) {
printf("\nNot enough memory available");
... code that handles this properly ...
... program can follow running without crashing ...
}