------- 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());
}
}