Insert a given pattern at a given point The challenge
Insert one string into another at a given index.
Given a string input in the format:
#:Pattern:Word

Where:

# is a positive integer marking the index
Pattern is the string (whose length is undefined) to insert
: is a delimiter
Word is the string to insert into.

Assume that a : will not be used in either string.
For example, if your input was
3:A2C:Hello World!

The output would be
HelA2Clo World!

If an invalid index is provided, the program must respond with an error. For example
12:!*!:Hello

is a valid input and must be explicitly handled somehow. For example, printing &quot;Invalid input!&quot; (or nothing at all!) is a valid way to catch, however crashing is not valid.
CJam, 20 bytes

q':/~La+@~/(@@_{];}|


Try it online in the CJam interpreter.

How it works

q':/                e# Read all input and split it at colons.
    ~                e# Dump index, pattern and word on the stack.
     La+             e# Append the array [""] to the word.
                     e#   This increases the word's length by 1 (to deal with the
                     e#   highest index possible index) without affecting output.
        @~           e# Rotate the index on top and evaluate it.
          /          e# Split the word into chunks of that length.
           (         e# Shift out the first chunk.
            @@       e# Rotate pattern and remaining chunks on top.
              _      e# Copy the array of remaining chunks.
                     e#   This array will be empty if the index was too high.
               {];}| e# If the array if falsy, clear the stack.