Java 如何正确处理错误
我是一名java初学者,正在为Web服务编写前端。我必须验证输入,以便为用户获取有用的错误消息。目前它的工作方式如下:Java 如何正确处理错误,java,Java,我是一名java初学者,正在为Web服务编写前端。我必须验证输入,以便为用户获取有用的错误消息。目前它的工作方式如下: public Object zipVal(String zip) { try { if (zip.length() == 5) { val.setZip(Integer.parseInt(zip)); return val.getZip(); } else
public Object zipVal(String zip)
{
try
{
if (zip.length() == 5)
{
val.setZip(Integer.parseInt(zip));
return val.getZip();
} else
{
return lengthError;
}
} catch (NumberFormatException e)
{
return formatError;
}
}
对于邮政编码。使用对象来声明返回类型不是我想要的(而且我不鼓励这样做),但我不确定我应该如何处理除此之外的错误输入。我应该只为每个异常和无效输入返回null,并用另一种方法处理这类事情吗
编辑:添加了一些实际引发异常的内容…如果返回值,则无需处理异常。最好声明该方法可能引发异常 NumberFormatException是一个RunTimeException。因此,如果您希望处理它,那么最好返回一个无效的zip(比如-1),让调用方知道出现了问题 否则,声明如果发生NFE,将引发自定义异常 这个片段可能很有用
public int setZipVal(String zip) // throws CustomException
{
try
{
if (zip.length() == 5)
{
val.setZip(Integer.parseInt(zip));
return val.getZip();
}
} catch (NumberFormatException e)
{
// Log the error and return invalid zip
return -1;
// OR throw custom exception
throw new CustomException("Length Error"));
}
}
是的,异常处理可能是更棘手的事情之一(如果一个人来自C编程背景,例如,我们曾经很高兴用< 0返回代码来指示错误的程序流)。 通常,通过捕获与之集成的其他API并将其封装在自己的异常中(某种程度上屏蔽它们),您会非常安全,但这样做时,不要忘记使用此构造函数(和/或此类构造函数的派生)将原始异常链接到您自己的异常中: 人们肯定会看到很多:
catch (Exception) {
return null;
}
在代码中,我不会说这是“好的”面向对象,但它仍然很常见,可以在特殊场合使用
而且,当您捕获异常时,您所做的事情(如何处理)通常非常重要,有人告诉我编程90%与错误控制有关,10%与功能有关:)
以下是一些教程/资源:您需要了解异常,返回
null
实际上取决于您的逻辑。您不会返回异常。你就扔吧。因此,您可以从方法中返回字符串而不是对象。您应该抛出扩展Exception
的自定义类,并在更高的层中处理此异常,以便向用户显示适当的错误。哦,我使用了错误的示例。我使用Integer.parseInt()/Double.parseDouble()还有一些输入如果输入类型错误,则会返回异常。正如@TheLostMind所说,抛出异常和返回值是两件截然不同的事情。第一步是确定返回什么类型的对象以及要抛出什么类型的异常(如果有)。
catch (Exception) {
return null;
}