黑马程序员——java基础之异常
来源:互联网 发布:c数值算法 编辑:程序博客网 时间:2024/05/17 21:48
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
异常
异常就是程序在运行时出现的不正常情况。
异常的由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象。
其实就是java对不正常情况进行描述后的对象体现。
对于问题的而划分,有两种:①严重的问题。②非严重的问题。
对于严重的:java通过Error类进行描述。对于Error一般不编写针对性的代码处理。
对于非严重的:java通过Exception类进行描述。对于Exception可以使用针对性的处理方式进行处理。
如果在函数上声明异常
便于提高安全性,让调用者进行处理,不处理编译失败。
Throwable
|--Error
|--Exception
异常的处理, java提供了特有的语句:
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码;(处理方式)
}
finally {
一定会执行的语句; }
一个标准的异常处理例子:
package zrl;import java.io.*;import java.io.IOException;/* * 标准的io异常处理 */public class File {public void fileread() throws IOException{FileReader fir = new FileReader("fi.txt");char[] ch = new char[1024];int num = 0;while((num=fir.read(ch))!=-1){System.out.println(new String(ch,0,num));}fir.close();}public static void main(String[] args) throws IOException {FileWriter fi = null;try{fi = new FileWriter("fi.txt");fi.write("1123");}catch(IOException e){System.out.println(e.toString());}finally{try{if(fi != null);fi.close();}catch(IOException e){System.out.println(e.toString());}}File f = new File();f.fileread();}}
对捕获到的异常对象进行常见的方法操作。
String getMessage():异常信息
String toString():异常名称:异常信息。
void printStackTrace():异常名称,异常信息,异常出现的位置。
对多异常的处理
函数中,只要有一个异常发生,这个函数就会终止。
1.声明异常时,建议声明更为具体的异常,这样处理的可以更具体。
2.对方声明几个异常就对应有几个catch块。不要定义多余的catch块。
如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
建议在进行catch处理时,,catch中一定要定义具体处理方式。不要简单定义一局e.printStackTrace(),也不要简单的就书写一条输出语句。
如何定义异常信息呢?
因为父类已经把异常信息的操作都完成了。
所以子类只要在构造时,将异常传递给父类通过super语句。
那么就可以直接通过getMessage方法获取自定义的异常信息。
自定义异常:
必须是自定义类继承Exception。还可以继承Throwable,
但是Throwable已经有两个派系了 我们只要继承Exception就行了。
继承Exception原因:
异常体系有一个特点:因为异常类和异常对象都需要被抛出。
他们都具备可抛性。这个可抛性只有Throwable这个体系中的独有特点。
只有这个体系中的类和对象才可以被throws和throw操作。
throws和throw的区别:
throws使用在函数上。throw使用在函数内。
throws后面跟的异常类,可以跟多个,用逗号隔开。throw后跟的是异常对象。
异常有两种:
编译时被检测异常。
运行时异常(编译时不检测)
异常的好处:
1.将问题进行封装。
2.将正常流程代码和问题处理代码相分离,方便与阅读。
异常的处理原则:
1.处理方式有2种。:try或者throws
2.调用到抛出异常的功能时,抛出几个,就处理几个。 一个try对应多个catch的情况。
3.多个catch,父类的catch放到最下面。
4.catch内,需要定义针对性的处理方式。
- 黑马程序员—JAVA基础之异常
- 黑马程序员——-——java基础之异常
- 黑马程序员——-——java基础之异常
- 黑马程序员——java基础之异常
- 黑马程序员——JAVA基础之异常处理机制
- 黑马程序员——java基础之异常
- 黑马程序员—java基础之异常总结
- 黑马程序员——Java基础---异常
- 黑马程序员——Java基础--- 异常
- 黑马程序员——Java基础->异常
- 黑马程序员——Java基础-异常
- 黑马程序员——Java基础---异常
- 黑马程序员——Java基础---异常
- 黑马程序员——Java基础--异常
- 黑马程序员——Java基础---异常
- 黑马程序员——Java基础-异常
- 黑马程序员——Java基础--------异常
- 黑马程序员——java基础---异常
- 采购预算管理系统
- 浅谈凸优化问题中的Bregman迭代算法
- APP界面设计之尺寸篇
- 多线程编程(四)--线程同步
- java迷宫算法
- 黑马程序员——java基础之异常
- java-web-j2e学习建议路线
- 多线程编程(五)--线程池
- 【再思考】PATBasic——1033. 旧键盘打字(20)
- OJ第二批——Problem I:改错题:类中私有成员的访问
- 边缘检测子综述(A review of classic edge detectors[J]. Image Processing On Line, 2012.)
- MongoDB:逐渐变得无关紧要
- Android In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing
- Openstack Restful Api