Java - 使用类异常捕获异常

时间:2014-11-29 23:11:08

标签: java

我必须:创建一个代码,演示如何捕获各种异常:使用以下代码模板:

catch (Exception exception)

感谢所有有用的评论。 我修改了我的代码:

package exception;

import java.util.Scanner;

import java.io.*;
public class Exception
{
   public static void main(String args[])
   {
      try
      {
         int a[] = new int[10];
         System.out.println("Access element three :" + a[11]);
         // The reason this is an exception is because there is no element 11 of the array. It only has 10.
      }
      catch(ArrayIndexOutOfBoundsException e)
      {
         System.out.println("Exception thrown  :" + e);
         // This should print out whatever number was requested for a[e]
      }
      System.out.println("Out of the block");
      // Once the exception is caught, this statement will be printed.
   }
}

输出:

run:
Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 11
Out of the block
BUILD SUCCESSFUL (total time: 1 second)

现在我的问题是:格式是否正确完成?问题需要我使用

catch (Exception exception).

我不确定这是不是我做了 - 如果不是我怎么办?

再次感谢大家。

2 个答案:

答案 0 :(得分:2)

问题在于try-catch块的语法。 它应该如下:

try {
    //Here goes code that might throw an exception.
}
catch(Exception e)
{
    //Here goes code to handle if an exception was thrown in the try block.
}

我假设你的任务hander-outer希望你不要只用“throw new java.lang.Exception();”抛出异常但是要编写一些可能引发异常的代码。

如果您希望代码按照您的方式工作,它将如下所示:

try {
    java.lang.Exception exception = new java.lang.Exception();
    throw exception;
}
catch(Exception e)
{
    System.out.println("I caught one!, Here's it's info: ");
    e.printStackTrace();
}

但是,如果你想以正确的方式做到这一点,它将看起来像这样:

try {
    int number = 500;
    int result = number / 0;
    //This will throw an exception for dividing by zero.

    int[] array = new int[10];
    int bad = array[11];
    //This will throw an ArrayIndexOutOfBoundsException

}
catch(Exception e)
{
    System.out.println("I caught one! Here's some info: ")
    e.printStackTrace();
}

当然,使用上面的代码,只要抛出第一个异常(除以零),catch块就会捕获它并突破try块,所以下一个坏代码片段不是曾经执行过。

我建议您在此处了解此作业需要了解的内容: https://docs.oracle.com/javase/tutorial/essential/exceptions/try.html

还在这里: https://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html

这里也是: http://docs.oracle.com/javase/tutorial/essential/exceptions/

祝你好运!

<强> 修改

在catch块中,您可以使用“System.exit(1);”这将停止你的程序并让它返回1,这意味着它以错误结束了它的执行。 但是,假设您希望让用户输入他们的年龄。您可以在try块中提示它们,如果它们输入负数,您可以使用异常捕获它并再次提示,直到它们输入正数。在这种情况下,您不希望使用System.exit(1),因为那样您的程序会在它继续运行时停止,所有这些都是因为用户提供了错误的输入。

这不是一个很好的例子,因为你不应该处理这些琐碎的事情,例如负数,但有例外。但这个想法是一样的。如果您希望代码继续,您将需要处理错误并继续。唯一一次使用“System.exit(1);”如果您的程序无法修复给定的错误,或者您的程序只执行了一项任务,并且该任务无法使用给定的输入完成,或者在执行该任务时遇到错误。

答案 1 :(得分:0)

这包括其他答案遗忘的一些内容,例如可编写脚本(这是一件好事!)

package exception;

//import java.util.Scanner; (unused import)
import java.lang.Exception;

public class ExceptionTester {
    public static void main(String[] args) {
        try {
            throw new Exception("Error Message Here");
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        };
    }    
}