why does this not throw error when child is throwing more errors than parent...
Because it isn't. The Exception class is a super class of both IOException and FileNotFoundException, so the parent can throw an IOException, a FileNotFoundException, and a ton of other checked exceptions that the child can't throw.