It would help significantly if you could post your code for initialization of the NVIC, and CAN and timer peripherals. A common oversight is to enable interrupts in the NVIC, but to not have the vectors setup yet, so the NVIC vectors the interrupt into uninitialized address. You should initialize the peripherals and setup the interrupt vectors in the NVIC before enabling the interrupt in the NVIC registers.
Are you using nested interrupts, or non-nested interrupts ? Are you using the IAR pragma(__irq__arm) or (__irq__nested__arm) in your interrupt handler source code function definitions?
Are you writing 0x00000000 to VICVectorAddress register at the end of each interrupt service routine (I know this is necessary in the LPC21xx processors, but can't recall if it is also necessary in the LPC17xx)