我必须:创建一个代码,演示如何捕获各种异常:使用以下代码模板:
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).
我不确定这是不是我做了 - 如果不是我怎么办?
再次感谢大家。
答案 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);
};
}
}