假设您有一个控制台应用程序:
Main.java
和ClassA.java
您的主类包含运行程序的public static void main(String[] args)
方法,它使用用户输入作为参数来调用ClassA
中的方法。
在将参数发送到main
方法之前,您是否在ClassA
方法中放置了用户输入验证?
OR
您是否将用户输入验证放在ClassA
方法中,这些方法会将消息转发回来,表明输入成功与否?或抛出异常?
即。在给出无效输入时,Integer.Parse(...)
会抛出NumberFormatException
。
答案 0 :(得分:1)
您可能希望在classA中抛出有意义的异常,并让main方法决定是否/如何处理这些异常。当您重复使用A类时,新调用者可能希望做出其他决定。
我推荐章节" ErrorHandling" CleanCode一书(罗伯特C.马丁)。它例如"定义正常流程","使用例外而不是返回代码","分离业务逻辑和错误处理"。
在某些情况下,获得快速反馈很重要...不要等待两个小时才能完成计算并获得90%的异常。在其他情况下,获得详细的反馈更为重要。另请参阅Data validation: fail fast, fail early vs. complete validation
检查代码是否易于阅读并了解正常流程。每个函数应该只做一个事物/模型一个抽象层次。异常处理是一个级别的抽象。