异常:Java运行期间发生的问题就是异常,另外,Java中运行时发生的除了异常Exception还有错误Error。
异常:可以有针对性的处理方式;错误:通常发生后不会有针对性的处理方式,往往是系统级别的问题,无法针对处理,只能修正代码。
举个例子:对给定的数组同过给定的交表获取元素,
class Demo { /* 对给定的数组通过给定的角标获取元素。 */ int getElement(int[] arr,int index) { /* 它所提供的信息不够给力。想要更清晰,需要自己写。 它的抛出不满足我们的要求。准备自己抛。 */ if(arr==null) { throw new NullPointerException("arr指向的数组不存在"); } if(index<0 || index>=arr.length) { //该条件如果满足,功能已经无法继续运算。这时 就必须结束功能,并将问题告知给调用者。这时就需要通过异常来解决。 //怎么用呢? //1,创建一个异常对象。封装一些提示信息(自定义)。 //2,需要将这个对象告知给调用者。怎么告知呢?怎么将这个对象传递到调用者处呢?通过关键字throw就可以完成。 throw 异常对象; //3,throw用在函数内,抛出异常对象,并可以结束函数。 throw new ArrayIndexOutOfBoundsException("错误的角标,"+index+"索引在数组中不存在"); }
自定义异常:
上边的Exception中的异常不好认,准备定义一个符合我的程序要求的问题名称以及问题的信息,其实异常就是讲问题,封装成了对象。
查阅API发现:
Throwable
|--Error
|--Exception
Throwable是异常和错误的父类,自定义异常被抛出,必须是继承
Throwable或者Throwable的子类,该对象才可以被Throw抛出。
声明和捕获:
声明:将问题标识出来,报告给调用者。
如果函数内通过throw抛出了编译时异常,而捕获,那么必须通过throws进行声明,让调用者去处理。
捕获:Java中对异常有针对性的语句进行捕获。
语句:
try
{
//需要被检测的语句。
}
catch(异常类 变量)//参数。
{
//异常的处理语句。
}
finally
{
//一定会被执行的语句。
}
throw和throws的区别?
1,throw用在函数内。
throws用在函数上。
2,thorw抛出的是异常对象。
throws用于进行异常类的声明,后面异常类可以有多个,用逗号隔开。
class Demo { void show()throws Exception { throw new Exception(); } } class { public static void main(String[] args) { System.out.println("Hello World!"); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-26 11:58:28