Java 程序捕获算术异常并演示finally块

Java 程序捕获算术异常并演示finally块,java,Java,我有问题。编码如下所示。当我运行程序并输入aaa时,它显示错误,因为它只捕获算术异常。如何根据出现的问题添加适当的代码来克服异常 import java.io.* ; public class FinallyPractice1 { public static void main(String []) { BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));

我有问题。编码如下所示。当我运行程序并输入aaa时,它显示错误,因为它只捕获算术异常。如何根据出现的问题添加适当的代码来克服异常

import java.io.* ;
public class FinallyPractice1 
{
    public static void main(String [])
    {
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String inData; int num=0, div=0;
        try
        {   System.out.println("Enter the numerator:");
            inData=stdin.readLine();
            num=Integer.parseInt(inData);

            System.out.println("Enter the divisor:");
            inData=stdin.readLine();
            div=Integer.parseInt(inData);

            System.out.println(num+"/"+div+"  is  "+(num/div));
        }
        catch(ArrayIndexOutOfBoundsException ae)
        {
        System.out.println("You can't divide "+ num + " by " + div);
        }
         catch(ArithmeticException aex)
         {
          System.out.println("You entered not a number: " + inData);
        }
        finally
        {
        System.out.println("If the division didn't work, you entered bad data.");
        }
            System.out.println("Good-by");
    }
}
我已经找到答案了!编码如下所示:

 import java.io.* ;
    public class FinallyPractice1 
    {
        public static void main(String [] a) throws IOException
        {
            BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
            String inData; int num=0, div=0;
            try
            {   System.out.println("Enter the numerator:");
                inData=stdin.readLine();
                div=Integer.parseInt(inData);

                System.out.println("Enter the divisor:");
                inData=stdin.readLine();
                div=Integer.parseInt(inData);

                System.out.println(num+"/"+div+"  is  "+(num/div));
            }
            catch(ArithmeticException ae)
                  {
                      System.out.println("ArithmeticException by " + div);
                  }
                    catch(ArrayIndexOutOfBoundsException ae)
                    {
                    System.out.println("You can't divide "+ num + " by " + div);
                 }
                    catch(NumberFormatException ae)
                    {
                  System.out.println("NumberException");
                 }
                    finally
                  {
                    System.out.println("If the division didn't work, you entered bad data.");
                 }
                      System.out.println("Good-by");
        }
    }
再添加一个catch块,如下所示:

    } catch(ArrayIndexOutOfBoundsException ae) {
        System.out.println("You can't divide "+ num + " by " + div);
    } catch(ArithmeticException aex) {
        System.out.println("You entered not a number: " + inData);
    } finally {
        //....
    }
通常,您可以向单个try块添加任意多个catch块。但是记住给他们正确的顺序——首先放置更具体的异常,最后放置更一般的异常

如果要捕获任何可能的异常,可以使用Throwable类:

再添加几个catch块来处理异常

  catch(ArithmeticException ae)
        {
            System.out.println("ArithmeticException by " + div);
        }
        catch(ArrayIndexOutOfBoundsException ae)
        {
        System.out.println("You can't divide "+ num + " by " + div);
        }
        catch(IOException ae)
        {
        System.out.println("IOException");
        }
        finally
        {
        System.out.println("If the division didn't work, you entered bad data.");
        }
            System.out.println("Good-by");

由于您故意输入错误数据aaa,您的声明:

div=Integer.parseInt(inData);
将抛出NumberFormatException。您可以为此添加一个catch块:

...
} catch (NumberFormatException nfe) {
   System.err.println(nfe);
  // more error handling
} catch ...
你可以用新的。它有来自

catch (ArithmeticException |ArrayIndexOutOfBoundsException ae)

我建议您捕获您期望的异常,而不仅仅是一个一次性的异常或您忘记粘贴代码的异常。单击并添加它。您介意添加您的源代码吗?谢谢。代码如下所示。在哪里?这个问题和你上一个问题类似,但你没有跟进那个问题中鼓励你更清楚自己想要什么或正在做什么的评论。也许他在用空格编码。。。我已经尝试编译和运行了,但它显示了预期的标识符错误。您导入了算术异常类吗?您现在的问题是什么?您仍然有预期的错误?如果是,您需要发布更多详细信息。我已经发布了已经导入了算术异常类的新编码。错误显示在图像中。
catch (ArithmeticException |ArrayIndexOutOfBoundsException ae)