A is wrong because the overriding method must not throw new or broader checked exceptions.
E is wrong because you are reducing the visibility of the method.
B is correct because FileNotFoundException is the sub class of IO Exception(Narrow Exception)
C is correct because the overriding method may throw a fewer or no exceptions
D is correct because you aren't messing with the visibility of the method
F is correct for obvious reasons.
Additionally 'G' is also correct if exists. something like