/*
毕老师用电脑上课
问题中设计两个对象:毕老师 电脑
分析其中的问题:
比如电脑蓝屏啦 电脑冒烟啦
*/
class LangPingException extends Exception
{
/**
*
*/
private static final long serialVersionUID = 1L;
LangPingException(String msg)
{
super(msg);
}
}
class MaoYanException extends Exception
{
/**
*
*/
private static final long serialVersionUID = 1L;
MaoYanException(String msg)
{
super(msg);
}
}
class NoPlanException extends Exception
{
/**
*
*/
private static final long serialVersionUID = 1L;
NoPlanException(String msg)
{
super(msg);
}
}
class Computer
{
public int state = 2;
public void run() throws LangPingException, MaoYanException
{
if(state == 1)
throw new LangPingException("电脑蓝屏啦");
if(state == 2)
throw new MaoYanException("电脑冒烟啦");
System.out.println("电脑运行");
}
public void reset()
{
state = 0;
System.out.println("电脑重启");
}
}
class Teacher
{
private String name;
private Computer comp;
Teacher(String name)
{
this.name = name;
comp = new Computer();
}
public void prelect() throws NoPlanException
{
try
{
comp.run();
System.out.println(name+"讲课");
}
catch (LangPingException e)
{
System.out.println(e.toString());
comp.reset();//能处理 就catch处理
prelect();
}
catch (MaoYanException e)
{
System.out.println(e.toString());
test();//不能处理 做完能做的动作以后 再抛出让调用者知道。
//但是 这里涉及一个问题 我们无法处理的这个问题 调用者是否可以处理?
//拿此处的电脑冒烟来说 调用者不会修电脑 但是他更熟悉的是保持课时的进行
//即提出 异常转换 将冒烟异常转换为计划外异常。
throw new NoPlanException("课时无法进行:"+e.getMessage());
}
}
public void test()
{
System.out.println("大家练习");
}
}
public class ExceptionDemo6 {
public static void main(String[] args) {
Teacher t = new Teacher("毕老师");
try
{
t.prelect();
}
catch(NoPlanException e)
{
System.out.println(e.toString()+":.......");
System.out.println("换人");
}
}
}
//异常转换的应用场景:
/*
class NoAddException extends Exception
{
}
void addData (Data d)throws NoAddException
{
连接数据库
try
{
添加数据。出现异常 SQLException();//因 此异常可以内部解决 所以try catch
}
catch(SQLException())
{
解决问题
throw new NoAddException();//转换异常 抛出调用者能看懂的异常。
}
finally
{
关闭数据库
}
//上述操作出现了一个问题:当异常被内部消化时,若不抛出,调用者便不知道。
//因此,我们需要告诉调用者,需要将异常做一个转换,转换成调用者能处理,能看懂的异常。
}
//被称为异常的封装:
* 不该暴露的问题 就没有必要暴露出去 暴露了对方也处理不了。
*/
异常----应用与异常转换
最新推荐文章于 2021-02-16 09:46:39 发布