It's not very helpful to say "Application doesn't exist in RM." and not report which one(s) they are. If someone was looking at this exception it would be lacking critical info. Since the caller is simply ignoring the exception anyway, wouldn't it be simpler to just have the kill code ignore the missing applications and remove the try clause from the caller?
I think there's also an issue where the user can specify multiple arguments and the command will silently ignore their requests. For example:
yarn application -appStates RUNNING -kill app1 app2 app3
Since we're no longer checking for a specific number of arguments, I think the user can throw in all sorts of other options that will be silently ignored, probably to the surprise of the user.
Side note: it's a little weird to see app IDs as direct arguments to the kill option. In typical UNIX command-line processing the kill option would simply be a boolean flag option with no associated value, and the non-option arguments at the end of the command-line would be the application IDs to process based on the previous options specified, hence why space-separated is what I would expect for that app list. Not a must-fix, I just find it odd.