Throttle position sensor, EGR valve, Air temp sensor, Idle air control valve, clogged Catalytic converter.
They may not throw a code, either, since it runs fine sometimes, it will automatically clear the so called stored codes, especially if your battery is weak (comes up with a 12 all the time).
Also, it may just need "combustion service" which sounds like BS, but it fixed mine once!

slantsixness