【问题标题】:Java: When should use if-else and when should use try...catch to handle conditional check?Java:什么时候应该使用 if-else 以及什么时候应该使用 try...catch 来处理条件检查?
【发布时间】:2016-12-03 17:04:46
【问题描述】:

我很困惑。是否取决于具体情况?或者它有一个通用的标准?谁能总结一下什么时候用if-else,什么时候用try...catch

【问题讨论】:

  • try ... catch 仅在您尝试的语句实际上会引发异常时用作条件。在这种情况下,无法使用 if-else 检测到这一点,因为当异常发生时 if-else 将完全中止
  • try-catch 用于异常处理。不适用于条件检查
  • Throws or try+catch的可能重复

标签: java if-statement exception exception-handling


【解决方案1】:

我想这是一个太宽泛的问题,但从我的角度来看,try...catch 块必须仅在 exceptional 情况下使用,您并不真正期望发生的情况,但是,应用程序可以从这些情况中恢复情况。 If-else 是一个完全正常的块,可以让你的程序走向两个不同的方向。

【讨论】:

    【解决方案2】:

    if else 语句用于评估布尔表达式,例如,

    if(isWeekday){
        return "wakeup@6:00AM";
    }
    else{
        return "wakeup@10:00AM";
    

    当您可以轻松计算布尔表达式时,您将使用 if else 语句来处理您知道自己拥有的数据。有时,您不确定自己正在处理什么,并且在尝试处理它时可能会出错。在这种情况下,您将使用 try catch。

    try{
        Scanner data = new Scanner(new File("data.dat"));
    } catch (IOException e){
        e.printStackTrace();
    }
    

    在这种情况下,您甚至无法确定要从中获取数据的文件是否存在,因此您无法对其执行任何合理的计算。

    【讨论】:

      【解决方案3】:

      使用try-catch 而不是if-else 你真的不应该互换使用它们。

      try/catch 子句用于出现超出您控制范围且不在正常程序流程中的错误。例如,尝试写入文件并且文件系统已满?这种情况通常应使用try/catch 处理。

      if-else 子句应用于正常流程和普通错误检查。那么,例如,用户未能填充必需的输入字段?为此使用if,而不是try/catch

      【讨论】:

        【解决方案4】:

        java 中,当您的代码有可能抛出需要处理的异常时,您可以使用try-catch 语句。 try-catch 中的逻辑一直运行,直到发现异常,逻辑移动到捕获框,您可以在其中处理异常。

        try{
            //Exception prone logic
        }catch(Exception e){
            //handle the exception here
        }
        

        if-else 语句是一个条件语句,它评估一个布尔表达式,该表达式将程序流引导到 if 代码块或 else 代码块

        if(i == 0){
            //i is equal to 0
        }else{
            //i is not equal to 0
        }
        

        【讨论】:

          猜你喜欢
          • 2011-11-01
          • 2011-06-08
          • 1970-01-01
          • 2023-04-02
          • 2011-04-15
          • 2017-04-10
          • 2012-03-19
          • 2018-05-12
          • 2018-12-11
          相关资源
          最近更新 更多