Java 如何从函数返回值?
我在这里看到三个方面: 1) 使函数显式返回该值 2) 将附加参数添加到函数的参数列表中,并将字符串持有者作为该参数传递。函数完成执行后,该字符串持有者将包含函数的结果 3) 从将包含结果的函数中引发异常 我个人认为第一选择更可取,因为它简单、直观、直接 另一方面,当函数以错误的方式执行时,可能会有其他选择,如抛出异常或在发生错误时使用通过参数传递的变量来保存错误 直觉上,我看到理想的选择是有显式的返回值并抛出声明。所以返回值用于正常执行,捕获的异常将发出异常情况的信号。但我自己不太喜欢异常,只要它不是完全不可预测的错误,所以我会使用显式返回值和附加参数来保存一些额外的情况日志或错误Java 如何从函数返回值?,java,function,Java,Function,我在这里看到三个方面: 1) 使函数显式返回该值 2) 将附加参数添加到函数的参数列表中,并将字符串持有者作为该参数传递。函数完成执行后,该字符串持有者将包含函数的结果 3) 从将包含结果的函数中引发异常 我个人认为第一选择更可取,因为它简单、直观、直接 另一方面,当函数以错误的方式执行时,可能会有其他选择,如抛出异常或在发生错误时使用通过参数传递的变量来保存错误 直觉上,我看到理想的选择是有显式的返回值并抛出声明。所以返回值用于正常执行,捕获的异常将发出异常情况的信号。但我自己不太喜欢异常,只
请提供有关该主题的书籍或文章(不必谈论Java,任何其他具有类似机制的语言也适用)。您绝对需要选项1。例外情况并非不可预测;如果你正确地使用它们,它们实际上是完全可预测的。您可以根据错误引发不同的异常类型(FileNotFoundException、IllegalArgumentException、SomeConditionSpecificToMyAppException等),这些异常可以包含您需要传递的任何错误或诊断信息
Java SE教程中有一个关于异常的好章节:我几乎每次都会使用choice 1。没有任何东西可以阻止您根据需要抛出异常。Java方法具有返回值的原因是:返回其结果。在绝大多数情况下,1应该是你唯一的选择。即使你想返回一个包装器对象,例如,因为你需要返回多个值,你可能只需要
return
thing
异常只是:它们是在异常(即异常)情况下抛出的。由于传统上引发异常也会影响性能,因此在正常操作期间不应引发异常
你为什么要把自己搞糊涂
编辑:
另一方面,例外情况非常适合于罕见/异常情况:
- 它们具有生成调试信息的内置支持。在处理大多数bug时,获得堆栈跟踪是成功的一半
- 所有优秀的调试器都允许将抛出的异常用作断点,这是非常宝贵的
- 异常允许相对透明地向方法调用链传递错误条件,允许以所需的粒度放置错误处理代码
- 异常是Java中处理错误条件的标准方法。这对大多数程序员来说应该足够了。请尊重那些必须使用您的代码的人,不要通过重新发明轮子来打破这些基本惯例
抛出新的MySpecificException(“这个特定的东西出错了”)代码>。当然,您可能会像在C中一样使用Java编程,但是为什么要首先使用Java呢?没有一个javaapi能满足您的建议。如果你愿意,可以这样做,但你已经被警告:这是一个糟糕的设计,你会激怒你API的所有用户。我不太喜欢异常的整个概念,因为它们变成了非异常,所以如果它们不是异常,为什么我要让我的程序以异常的方式运行,这可能会导致性能损失和其他丑陋的事情,而不是保存该异常文本并通过附加的“validationFault”StringBuilder参数返回它。@gasan:1。异常允许生成正确的调试信息(例如堆栈跟踪)。2.在调试器中可以轻松捕获异常。3.异常允许错误以标准方式在调用链上向上传播,但异常会导致额外的资源消耗,因此如果可能的话,最好以标准方式而不是通过异常进行程序控制