黑马程序员---异常finally

来源:互联网 发布:易语言端口发送数据 编辑:程序博客网 时间:2024/06/05 17:50

 ------- android培训、java培训、期待与您交流! ----------
/*
finally代码块:定义一定执行的代码。
 通常用于关闭资源。


*/








class FuShuException extends Exception
{
FuShuException(String msg)
{
super(msg);
}
}


class Demo
{
int div(int a,int b)throws FuShuException
{
if(b<0)
throw new FuShuException("除数为负数");
return a/b;
}
}
class ExceptionDemo5


{
public static void main(String[] args) 
{
Demo d = new Demo();


try
{
int x = d.div(4,-1);
System.out.println("x="+x);
}
catch (FuShuException e)
{
System.out.println(e.toString());
return;   .//如果加上return下面的“over”就不会执行,而finally还要执行。
}
         finally
{
  System.out.println("finally");//finally中存放的是一定会被执行的代码。
}


System.out.println("over");
}
}








例子:


class  NoEception extends Exception
{


}


public void method()throws NoException
{
连接数据库;

数据库操作(出现问题);//throw new SQLException();抛出去后关闭数据库执行不了。


关闭数据库;//该动作,无论数据操作是否成功,一定要关闭资源。
    try
{
连接数据库;

数据库操作(出现问题);//throw new SQLException();




}
catch (SQLException e)
{
会对数据库进行异常处理; 
throw new NoException();

}
finally
{
    关闭数据库;
}
}


/*异常处理语句的其它格式。
第一个格式:
try
{

}
catch ()
{
}
第二个格式:
try
{

}
catch ()
{
}
finally
{


}
第三个格式:
try
{

}
finally
{
}


记住一点:catch是用于处理异常,如果没有catch就代表异常没有被处理过,如果该异常是检测时异常。那么必须声明。
*/


/*
异常在子类覆盖中的体现:
1,子类在覆盖父类的时候,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3,如果父类或者接口的方法中,没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常
  如果子类方法放生了异常,就必须要进行try处理,绝对不能抛。
*/


class AException extends Exception
{
}
class BException extends AEception
{
}
class CException extends Exception
{
}
/*
Exception
       |--AException
      |--BException
|--CExcetion
*/
class Fu
{
void show()throws AException
{

}
}
class Test
{
void function(Fu f)
{
try
{
f.show();
}
catch ( AException e)
{
}

}
}


class Zi extends Fu
{
void show()throws BException
{

}
}
class
{
public static void main(String[] args)
{
Test t = new Test();
t.function(new Zi());
}
}
原创粉丝点击