日期:2014-05-20  浏览次数:20880 次

我是初学者,刚开始接触异常,谁能具体的给我介绍一下?
我在网上看视频学习java基础,但是接触到了异常,有很多不懂的地方,谁能给我系统的介绍一下异常。

------解决方案--------------------
异常:
1,什么是异常?
是对问题的描述,将问题进行对象的封装;
2,异常体系?
Throwable

------解决方案--------------------
---Error

------解决方案--------------------
---Exception
   
------解决方案--------------------
---RuntimeException
3,异常体系的特点?
异常体系中的所有类以及建立的对象都具备可抛性;
也就是说可以被throw和throws关键字所操作
也只有异常体系具备这个特点;
4,throw和throws的用法、
throw定义在函数内,用于抛出异常;
throws定义在函数上,用于抛出异常类,可以抛出多个,用逗号隔开;
5,当函数内有throws抛出异常对象,并未进行try处理,必须在函数上声明,否则编译失败;
注意:RuntimeException除外,也就是说函数内抛出的是RuntimeException异常,函数上不用声明;
如果函数声明了异常,调用者需要处理,处理方式可以throws可以try;
6,异常有两种:
    编译时被检测异常;  该异常在编译时如果没有处理(没有抛出,也没有try),编译失败;该异常被标示,代表可以处理
    运行时异常(编译时不检测);在编译时,不需要处理,编译器不检测;该异常的发生,建议不处理,让程序停止,需要对代码进行修正
7,异常处理的语句:
try  
{
需要被检测的代码:
}
catch()
{
处理异常的代码
}
finally
{
一定会执行的代码(有一种读不到,System.exit(0);退出)
}
有三种格式;
注意:finally中定义的通常是  关闭资源代码   因为资源必须释放;
finally只有一种情况不会执行,当执行System.exit(0);finally不会执行;

8,自定义异常:定义类继承Exception或者RuntimeException
1,为了让该类自定义具备可抛性;
2,让该类具备操作的共性方法;

当要定义自定义异常的信息时,可以使用父类已经定义好的功能;
异常信息传递给父类的构造函数;
class MyException extends Exception
{
    MyException(String message)
    {
        super(message);
    }
}
自定义异常:按照java的面向对象思想,将程序中出现的特有问题进行封装;

异常的好处:
1,将问题进行封装;
2,将正常流程代码和问题处理代码相分离,方便于阅读

异常的处理原则:
1,处理方式有两种:try 或者 throws ;
2,调用到抛出异常的功能时,抛出几个,就处理几个;
一个try对应多个catch
3,多个catch,父类的catch放到最下面;
4,catch内,需要定义针对性的处理方式,不要简单定义printStackTrace,输出语句;也不要不写;当捕获到的异常,本功能处理不了时,可以继续在catch中抛出;
try
{
    throw new AException();
}
catch(AException e )
{
    throw e ;
}
如果该异常处理不了,但并不属于该功能出现的异常;可以将异常转换后,在抛出和该功能相关的异常;
或者异常可以处理但需要将异常产生后和本功能相关的问题提供出去,让调用者知道,并处理,也可以将捕获异常处理后转换新的异常;

这是我的课堂笔记,希望能对你有用!!