您的位置:首页 > 职场人生

黑马程序员--java--异常

2015-07-29 12:55 405 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

            异常

1.1 异常的体系
定义:是在运行期间发生的不正常的情况。

由来:问题也是生活中的一类事物,Java中把问题这类事物进行了描述和封装,对应的类就是异常类。并且在异常类中子类后缀名都是用父类名,增强了阅读性!

不正常的情况分为两类:

Throwable

   |--error(严重的):一般不对其进行编写针对性代码处理。

   |--Exceptoion(非严重的):用针对性的方式进行处理。

Throwable特点:无论是error还是Exception,问题发生了就可以对其hrow进行抛出,让调用者知道并处理。

Throwable中的方法:

1.getMassage():获取异常信息,返回字符串。

2.toString():获取异常信息的类名和异常信息,返回字符串。

3.printStackTrace(PrintStream s):返回异常信息类名、具体异常信息、异常出现的行数,并把其存入指定的文件中,以便查阅。

简单异常示例:

class Demo{
public static int method(int[] arr,int index){
if(arr == null){
throw new NullPointException("数组的引用为空");
}

if(index>arr.length){
throw new ArrayIndexOutOfBoundException("数组角标越界");
}

return arr[index];
}
}


1.2 自定义异常
思想:将出现的问题封装成为对象,其类必须继承Exception,才能具备可抛性。

示例:
class DemoException extends Exception{
DemoException(String massage){
super(massage);//利用父类对传入信息的处理方式。
}
}


throw和throws的区别

1.throws用于标识函数暴露的异常类,可以多个抛出,中间用逗号隔开。而throw用于抛出集体的异常对象

2.throws用在函数上,其后接异常类名。throw用在函数内,其后接异常对象。

异常的分类:

1.编译时的异常。

2.编译通过,运行时的异常。(RuntimeException及其子类)

RuntimeException:在函数中抛出(throw)是不需要在函数名上(throws),而一般的Exception是需要在函数名上抛出的。
1.3 异常处理
不能处理:RuntimeException。

能处理:Exception 然后在catch中处理。

具体格式是:
try{
//需要被检测异常的代码。
}c
atch(异常类 变量) //该变量用于接收发生的异常对象
{
//处理异常的代码。
}f
inally{
//一定会执行的代码;如关闭IO、Socket资源。
}


finally有一种情况不会被执行,就是在之前执行了System.exit()。

异常处理原则:

1.函数内容如果需要抛出需要检测的异常,那么函数上必须要声明。否则,必须在函数内进行try/catch处理,不然编译会失败。

2.如果调用了声明异常的函数,要么try/catch,要么throws,否则编译失败。

3.能解决用catch,不能解决用throws。

4.一个功能如果抛出多个异常,内部有几个异常就抛出几个异常,对应的就有几个catch。

try、catch、finally组合特点

1.try catch finally

2.try catch(多个):当没有释放资源操作时。

3.try finally:异常无法直接处理,但必须要关闭资源。
1.4 异常注意事项
1.RuntimeException及其子类如果在函数中throw,可以不再函数上声明。

2.子类在覆盖父类方法时,父类方法如果有throws异常,子类自能抛出该异常或该异常的子类。

3.如果父类抛出多个异常,子类只能抛出父类异常的子集。

4.如果父类没有抛出异常,子类决不能抛出异常,只能try。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: