Added exception classes
Changed raise for negative numbers, changed factorial computing method
Added rescue for invalid inputs