This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
You only need to deal with it in the first method that overrides clone():
You see, class A needs to catch it because Object.clone() specifies that it can throw a CloneNotSupportedException. Because A implements Cloneable, this exception will in fact never be thrown and can therefore be caught and ignored (although throwing an Error is better to indicate that something is still wrong if it occurs).
Class B no longer has to deal with it because A.clone() no longer throws it.