异常的概念
当出现程序无法控制的外部环境问题(用户提供的文件不存在、文件内容损坏、网络不可用….)时,Java就会用异常对象来描述。
Java中的两种处理异常的方法
1、在发生异常的地方直接处理。
2、将异常抛给调用者,让调用者处理。
异常的分类
1、检查性异常:java.lang.Exception
此类异常是程序的逻辑并没有任何问题,出现异常的原因是外在的环境条件不满足。
2、运行期异常:java.lang.RuntimeException
此类异常说明程序中存在数组越界等bug,Java编译器强制要求处理这类异常,并且这类异常需要修改序来修改。
3、错误:java.lang.Error
此类异常不多见。可能是由于程序的bug,也可能是源于环境问题(例如:内存耗尽等)。
异常的处理
1、try….catch
程序运行产生异常时,将从异常发生点中断程序并向外抛出异常信息。
2、finally
如果把finally块置于try…catch…语句后,finally块一般都会得到执行,它相当于
一个万能的保险,即使前面的try块发生异常,而又没有对应异常的catch块,finally
块将马上执行。
3、抛出异常,让调用者去处理这个异常。
finally注:
以下情形,finally块将不会执行:
1、finally块中发生了异常。
2、程序所在线程死亡。
3、在前面的代码中用了System.exit();
4、关闭CPU。
例子:
import java.io.*;
public class Demo_1{
public static void main(String []args){
//try….catch
try{
FileReader fr=new FileReader(“d:\aa.txt”);//d盘中并没有aa这一文件
}catch(Exception e){
e.printStackTrace();
}
//finally,最后一道防线。
try{
FileReader fr=new FileReader("d:\\aa.txt");//d盘中并没有aa这一文件
}catch(Exception e){
e.printStackTrace();
}finally{
if(fr!=null){
try{
fr.close();
}catch(Exception e1){
e1.printStackTrace();
}
}
//抛出异常
Animal f=new Animal();
f.test1();
}
}
class Animal{
private Cat cat=null;
public Animal()
{
cat=new Cat();
}
public void test1()
{
System.out.println("111");
//处理异常
try{
son.test2();
}catch(Exception e){
System.out.println("Animal");
e.printStackTrace();
}
}
}
class Cat{
public void test2() throws Exception
{
//将异常向上抛给了Animal类里面
FileReader fr=new FileReader(“d:\aa.txt”);
System.out.println(“hahaha1”);
}
}
“`

被折叠的 条评论
为什么被折叠?



