Merging sorted arrays
Generally, you should do what you can not to throw an exception - it is slow and it looks bad.

In this case, you should go with:

        if (fstIndex&lt;fst.length){
            fstIndexValue = fst[fstIndex];
        } else {
            System.arraycopy(snd, sndIndex, result, fstIndex + sndIndex, snd.length - sndIndex);
            break;
        }


Exceptions, as the name implies, suggest an exceptional condition in which the application is. In your case, it's just the algorithm's termination point - a point which you want to reach. It's not exceptional, it's desired.

Also, I don't think there ever is a good excuse to explicitly catch a java.lang.ArrayIndexOutOfBoundsException - if your code is throwing it, then you're doing something else wrong (namely, missing appropriate checks).