Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Try-catch返回方法_Java - Fatal编程技术网

Java Try-catch返回方法

Java Try-catch返回方法,java,Java,这是最好的方法吗 method 1: input method2(): method2: (input) try catch return(method1()) method3: (input) .... 因此,当抛出异常时,您很少希望程序崩溃,因此最好使用return语句,以便用户可以为变量声明新的输入。我在课堂上读课本,课本上不包括退货。否则,在没有返回的情况下,如果程序刚刚终止,那么使用try-catch似乎毫无意义。如果一段代码处于授权位置,能

这是最好的方法吗

method 1:
   input
   method2():
method2: (input)
   try
   catch
      return(method1())
method3: (input)
   ....

因此,当抛出异常时,您很少希望程序崩溃,因此最好使用return语句,以便用户可以为变量声明新的输入。我在课堂上读课本,课本上不包括退货。否则,在没有返回的情况下,如果程序刚刚终止,那么使用try-catch似乎毫无意义。

如果一段代码处于授权位置,能够准确地知道如何处理异常,那么它可以捕获它并执行任何操作

如果不是,它应该抛出它以允许更高级别的代码处理它。有时有必要包装这样一个异常,以便将事物保持在与方法调用相同的抽象级别


在顶层,当出现代码无法处理的异常时,由一个人来处理。您可以记录异常并向用户道歉。

异常可以在调用代码中捕获

假设您正在用一种方法读取一个文件

Data readFile(String filename) {
  try {
    // Open file here
  } catch (Exception e) {
    // something has happened but you caught it here itself.
    // Caller of this method may not know that.
  }
}
相反,如果您的方法引发异常(预定义或自定义):

这一次,调用代码知道该方法可能会抛出异常,因此,可以按照它想要的方式处理它

例如

Data data = null;
while(data == null) {
  try {
    String f = /*Some code to read a string from input*/;
    data = readFile(f);
  } catch(Exception e) {
    System.out.println("Unable to read. " + e);
  }
}

当然,还有其他方法可以做到这一点。

您的语法很容易受到攻击,因为恶意用户的重复输入很容易导致堆栈溢出,从而导致method2出现异常

这个怎么样:

method 1:
  while
    input
    try
        return method2(input)
    catch
method2: (input)
    return (some result)
method3: (input)
   ....

基本上,如果您知道如何处理异常,您将捕获该异常。否则扔掉它,让打电话的人担心它。当然,如果这是合同的一部分,您可以捕获并抛出不同的异常。这是关于Java的吗?那为什么不发布Java代码呢?有时候你不想捕捉异常。快速失败可能比假设你得到了一些有效的东西(数据库连接、文件句柄、一些复杂计算的结果)之后崩溃要好。(是的,java,b/c我很懒,决定坚持使用最少的伪代码,我是一个networker,我能说什么:/)对,有些例外情况是,你不想让程序做任何事情,你想让它崩溃,但是,让我们假设它的文件名是错误的。您不希望用户再次重新加载整个程序。为什么不在文件有效之前将其返回到inputed方法。。。您不希望程序崩溃的情况。我认为这很接近,基本上是因为我希望它重新启动。因此,与@WW所说的不同,基本上是道歉并记录,然后关闭并重新打开;我希望它就像“好的,没问题,再打一次”。它会将您发送回TRY或其他方法以重新键入文件名。如果它是正确的,它将通过尝试跳过捕获,不返回您,而是继续应用程序。从不真正阻止用户;有效地提高QoS。这是您的要求,但我建议不要使用完整的无限循环来获取用户输入。有一些最大的尝试次数,如果仍然不成功,失败并报告给此方法的调用方或用户(可能会记录)。好的,这是一个很酷的想法,我没有想到。另一个人说这是一个安全漏洞。实际上,我对编程还不熟悉,所以很多行话我都听不懂,我花了一点时间才明白其中的含义。感谢您的输入:)因此,它实际上更安全,更不容易使整个程序崩溃,并让用户重新启动?正如其他人所写,您应该在method2之外捕获异常,并以比递归调用更好的方式处理它。啊,好的,好的,我之所以使用递归,是因为我不知道如果某件事情失败了,返回到开始的方法。这是我能想到的唯一一件事…不是真的,我只是想让他们再做一遍try语句,直到它正确为止
method 1:
  while
    input
    try
        return method2(input)
    catch
method2: (input)
    return (some result)
method3: (input)
   ....