Java基础---异常和异常处理

Java异常体系
        |——Throwable  (实现类描述java的错误和异常--超类
            |——Error (错误)一般不通过代码去处理。
            |——Exceprion (异常)  代码处理
                |——RuntimeException (运行时异常)
                |——编译时异常(非运行时异常,受检异常)

Java基础---异常和异常处理

两类异常注意:
1.方法内部抛出一个运行时异常对象,方法可以声明抛出也可不声明抛出
2.方法内部抛出一个编异时异常对象,方法必须要声明抛出
3.调用一个声明抛出运行时异常类型的方法,调用者可处理也可不处理
4.调用一个声明抛出编译时异常类型的方法,调用者必须要处理

                   以Error结尾代表错误,以Exception结尾代表异常    
---------------------------------------------------------------------------------------------------------           
Throwable类   (所有异常与错误的父类)
Throwable常用的方法:
    1. toString()               返回描述该异常情况的类的完整类名 = 包名 + 类名
    2. getMessage()        返回创建Throwable对象的时候传入的消息字符串
    3. printStackTrace()  打印异常的栈信息 


异常的处理方式:捕获处理  抛出处理
方式一:捕获处理 try...catch    
    捕获处理的格式:
        try{

            可能会发生异常的代码

        }catch(异常的类型 变量名){

            异常处理代码;
        }

捕获处理要注意的细节:【month201809.Demo1】【month201809.Demo2】
1. try块的代码出现的异常处理之后,try-catch块外面的代码可以正常执行
2. try块中出现了异常代码,则try块中异常代码后的所有代码无法正常执行
3. try块后面可以有多个catch块,但捕获的异常类型必须按照从小到大

Exception可以捕获任意类型的异常,是因为Exception是所有异常类的父类(包治百病)
----------------------------------------------------------------------------------------------------------
方式二:抛出处理  throws throw
适应情况:方法内部不想处理,或处理不了。扔出去
抛出处理注意:
    1. 方法内部抛出编译时异常对象时,必须在方法上声明抛出throws。
    2. 调用一个声明抛出编译时异常类型的方法,调用者必须进行异常处理
    3. 一个方法如果遇到了throw关键字,则该方法会马上停止执行后面代码。

throw与throws区别:
    1. throw用在方法内部,抛出异常对象;throws用在方法声明,抛出异常类型 
    2. throw后只抛出一个异常对象(一次只一个),throws后跟异常类型(一次可多个)

抛出处理和捕获处理处理方式选择:
    如果需要告知调用者出了异常,则需使用抛出处理
    如果与用户(web层)的代码,则使用捕获处理

----------------------------------------------------------------------------------------------------------
自定义异常类: 自定义一个类继承Exception即可
【month201809.Demo3】