//自己定义一个异常类,抛出此类的异常对象的方法后面得声明这个类
public class OtherException extends Exception
{
OtherException(String message)
{
super(message);
//调用了父类的构造方法,用于输出错误的提示信息message
}
}
public class ExceptionDemo
{
public static void main(String[] args)
{
int a[] = new int [5];
try//调用有异常声明的方法的代码放在这个try代码块中
{
int num = method(a,5);
System.out.println("元素的值为:"+num);
}
catch(OtherException e)//捕获对应的异常对象
{
System.out.println(e.getMessage());//获取method中new异常对象时传入的信息
System.out.println(e);//将异常对象变成字符串打印
e.printStackTrace();//若将异常对象抛给jvm,则jvm获取到异常对象后调用的就是这个方法
}
catch(java.lang.ArrayIndexOutOfBoundsException e)
{
System.out.println(e);
}
finally//一定会被执行的代码块,用于释放资源,如关闭数据库
{
System.out.println("close DB");
}
}
public static int method(int a[],int index)throws OtherException,java.lang.ArrayIndexOutOfBoundsException//声明自己定义的异常类
//函数声明了异常
{
if(index >= 5)
{
throw new java.lang.ArrayIndexOutOfBoundsException("数组角标越界了");
//将异常对象抛给调用者即主函数的method那一行,由于那一行没有catch这种类型的异常,所以main会自动将此
//异常对象抛给jvm,jvm在自动在控制台上打印出异常信息
}
if(index < 0)
{
throw new OtherException("角标为负");
}
return a[index];
}
}