Error handling + improvement in !

Returns a 0 when the eval function cannot evaluate.
The ! works but only if (n)! is used. a + (n)! works as well.