</pre><p></p><pre name="code" class="java">
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
异常
异常是什么? 是对问题的描述。将问题进行对象的封装。
异常体系:
Throwable
|--Error
|--Exception
|--RuntimeException
异常体系的特点: 异常体系中所有类及建立的对象都具有可抛性。
也就是说可以被throw和throws关键字所操作。
只有异常体系具有这个特点。
---------------------------------------------------------------------
throw和throws的用法:
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。
当函数内容有throw抛出异常对象时,未进行try处理。必须要在函数上声明,否则编译失败。
注意:RuntimeExcepton除外。也就说函数内如果抛出RuntimeException异常,函数上可以不用声明。
如果函数声明了异常,调用者需要进行处理,处理方法可以throws也可以try。
----------------------------------------------------------------------------
异常有两种:
编译时被检测异常
该异常在编译时,如果没有处理(没有抛也没有try),编译失败。
该异常被标示,代表这可以被处理。
运行时异常
在编译时,不需要处理,编译器不检查。
该异常的发生,建议不处理,让程序停止,需要对代码进行修正。
-------------------------------------------------------------------------------
异常处理语句:
try
{
需要被检测的代码;
}
catch()
{
处理异常的代码;
}
finally
{
一定会执行的代码;
}
有三个结合格式:
1
try
{
}
catch()
{
}
---------------------------
2.
try
{
}
finally
{
}
---------------------------
3.
try
{
}
catch()
{
}
finally
{
}
注意:
1.finally中定义的通常是关闭资源代码,因为资源必须释放。
2.finally只有一种情况不会被执行,当执行到System.exit(0),finally不会执行
自定义异常
class MyException extends Exception
{
MyException(String msg)
{
supe(msg);
}
}
自定义异常:按照java面向对象思想,将程序中出现的特有问题进行封装。
</pre><h2>自定义异常例子:毕老师用电脑上课 电脑有冒烟 蓝屏 课时无法完成 三个异常<pre name="code" class="java">class LanPingException extends Exception
{
LanPingException(String msg)
{
super(msg);
}
}
class MaoYanException extends Exception
{
MaoYanException(String msg)
{
super(msg);
}
}
class KeShiException extends Exception
{
KeShiException(String msg)
{
super(msg);
}
}
class Computer
{
private int state = 3 ;
public void run()throws LanPingException,MaoYanException
{
if(state == 2)
throw new LanPingException("蓝屏");
if(state == 3)
throw new MaoYanException("冒烟");
System.out.println("电脑运行");
}
public void reset()
{
state = 1;
System.out.println("电脑重启");
}
}
class Teacher
{
private String name;
private Computer comp;
Teacher(String name)
{
this.name = name;
comp = new Computer();
}
public void prelection() throws KeShiException
{
try
{
comp.run();
}
catch (LanPingException e)
{
comp.reset();
}
catch (MaoYanException e)
{
throw new KeShiException("课时无法完成");
}
System.out.println("讲课");
}
}
class TestException
{
public static void main(String[] args)
{
Teacher bi = new Teacher("毕老师");
try
{
bi.prelection();
}
catch (KeShiException e)
{
System.out.println("换老师或者换电脑");
}
}
}