In Solidity's 0.4.9 release:
Internal exceptions are now thrown by using an invalid opcode (0xfe), manual exceptions still use an invalid jump.
and
Code generator: Internal errors (array out of bounds, etc.) now cause a reversion by using an invalid instruction (0xfe - EIP141) instead of an invalid jump. Invalid jump is still kept for explicit throws.
Why the difference? Is there an advantage to using an invalid jump destination rather than the 0xfe opcode for explicit throws?
throwcan use invalid opcode instead of an invalid jump. Can you clarify why in one case "This was replaced with the invalid opcode", and in the manual throw case, invalid jump was not replaced with invalid opcode? – eth May 22 '17 at 09:27