我想区分发生的错误,因为系统中的某些内容(例如,文件丢失)与代表用户的错误行为相混淆(例如,在GUI中为某些命令选择了太多项目)
程序员是否倾向于抛弃这些情况中的“UserMistakeException”(在JavaSE或Eclipse API中)? 然后我会以不同的方式呈现这种错误。
答案 0 :(得分:7)
不,没有这样的例外。当用户选择可选择的内容时,我没有看到异常情况。
您更愿意重新考虑您的互动设计。可能是你应该禁止选择太多的物品。您可以通过禁用某些按钮来允许选择但阻止执行。
但请告诉您的用户每种情况下的情况。
答案 1 :(得分:4)
我会说例外情况就像他们的名字所说的那样,是一种特殊的东西,而不是在正常使用程序时发生的事情。正常使用将包括最终用户可能犯的一些错误。用户输入验证是一个完全不同的问题,您应该以不需要抛出任何异常的方式准备用户所做的错误。
答案 2 :(得分:3)
在我的应用程序中,有一个自定义异常(扩展RuntimeException
),我为此类情况创建了该异常。当抛出这种异常时。客户端将在错误对话框中向用户显示消息。所有其他异常都会导致显示通用对话框,其中包含Details按钮,允许用户查看堆栈跟踪并将其发送给我。我不认为Java包含任何适用于此的异常类型,因此您必须创建自己的。
但是,我完全同意其他答案,即用户界面应该阻止所谓的“用户错误”。防止错误是可用性的基本规则之一。如果用户选择了太多项,则客户端应验证该项,以有意义的方式显示它并且不抛出异常。在我的应用程序中,特殊异常类型仅适用于UI在将数据发送到服务器之前无法正确验证数据的情况。实际上,获取自定义异常现在非常罕见。
答案 3 :(得分:2)
如果是用户错误,那么您的程序应该尝试让用户更正它。 (如果我选择的文件有问题,请告诉我有什么问题,并请我再试一次。如果我选择的项目太多,请告诉我需要取消选择多少项目。)
作为一个人类用户,我不准备捕捉异常,所以不要把它们扔给我。