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.
and these cannot be changed. I would like to throw IllegalArgumentException for find() and update() if criteria or data length is not equal to number of fields in file. But can I do that in my implementation class? update() and unlock() explictly define SecurityException, which is a runtime exception, so throwing additional runtime exceptions seems to be violation of specification. Am I right or wrong?
RuntimeExceptions don't need to be declared in the throws clause of a method, nor do they need to be mentioned in the Javadoc.
IOW, you can throw them from an implementing class without changing the interface definition.
You will possibly also find that you will need to throw additional checked exceptions (somewhat dependent upon your design decisions) which will require a different solution, as you can indeed not change this particular interface (but the assignment says nothing about implementing it DIRECTLY, which should give you a hint as to a possible solution for that).