黑马程序员--java--异常
2015-07-29 12:55
405 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
定义:是在运行期间发生的不正常的情况。
由来:问题也是生活中的一类事物,Java中把问题这类事物进行了描述和封装,对应的类就是异常类。并且在异常类中子类后缀名都是用父类名,增强了阅读性!
不正常的情况分为两类:
Throwable
|--error(严重的):一般不对其进行编写针对性代码处理。
|--Exceptoion(非严重的):用针对性的方式进行处理。
Throwable特点:无论是error还是Exception,问题发生了就可以对其hrow进行抛出,让调用者知道并处理。
Throwable中的方法:
1.getMassage():获取异常信息,返回字符串。
2.toString():获取异常信息的类名和异常信息,返回字符串。
3.printStackTrace(PrintStream s):返回异常信息类名、具体异常信息、异常出现的行数,并把其存入指定的文件中,以便查阅。
简单异常示例:
1.2 自定义异常
思想:将出现的问题封装成为对象,其类必须继承Exception,才能具备可抛性。
示例:
throw和throws的区别
1.throws用于标识函数暴露的异常类,可以多个抛出,中间用逗号隔开。而throw用于抛出集体的异常对象
2.throws用在函数上,其后接异常类名。throw用在函数内,其后接异常对象。
异常的分类:
1.编译时的异常。
2.编译通过,运行时的异常。(RuntimeException及其子类)
RuntimeException:在函数中抛出(throw)是不需要在函数名上(throws),而一般的Exception是需要在函数名上抛出的。
1.3 异常处理
不能处理:RuntimeException。
能处理:Exception 然后在catch中处理。
具体格式是:
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。
异常
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。
相关文章推荐
- 黑马程序员--java--多态和内部类
- 黑马程序员--java--继承和接口
- 黑马程序员--java--两种设计模式
- 百度面试题 号码找到符合条件
- 2016校招内推 -- 阿里巴巴前端 -- 四面面试经历
- 程序员笔试面试--数据库知识
- 面试的时候的一些记录 - 不断更新
- 从武侠小说到程序员面试
- 阿里面试题---------关于html标签中物理标记和逻辑标记区别
- 程序员是如何一步步走向平庸的?
- 程序员面试宝典中的一个错误 char * b=(char *)&a
- 黑马程序员--IO流中的File类和Properties类、其他流
- 剑指offer面试题12——打印1到最大的n位数
- 程序员接私单需要注意的几大问题
- 从初级程序员到CEO的蜕变
- 115个Java面试题和答案——终极列表(下)
- 3015年度重大考古发现:中国古代村落“中关村”发现保存完好程序员墓
- 黑马程序员--IO流
- 面试题29_数组中出现次数超过一半的数字
- 程序员,不要轻易重写代码。