黑马程序员-异常总结和笔记

------- android培训java培训、期待与您交流! ----------

异常

异常分为两种:

  Error (这个是严重的异常 表示JVM不能够处理的)

      Exception (这个是非严重异常 JVM可以处理)

 

ErrorException都继承自父类Throwable

在程序中发生错误的地方会产生一个 Exception或者Error的子类对象,然后把对象返回被调用的地方,然后在catch中用(Exception e)来接收产生的对象,再进行操作

JVM默认的异常处理机制就是调用PrintStackTrace方法,打印堆栈中的异常跟踪信息,直接执行的没有返回值 这个方法是重写的Throwable中的方法

 

在有可能发生错误的方法上抛出异常 throws Exception

当在函数内部出现了throw抛出异常对象时必须要给对应的处理动作。要么就在内部try catch处理,要么就在函数抛出。在其他程序调用他的时候有两种解决方式:继续抛出、用try catch 捕获

如果一直都是抛出没人捕获该异常的话将由JVM用默认的方式对他进行处理,一发生异常程序会马上终止 
在函数上声明异常便于提高安全性,让调用处处理,不处理就编译失败。

 函数中只要有异常发生没在该函数用try catch处理的话这个函数就结束了

对多异常的处理:

  1,在抛出异常的时候最好抛出声明更为具体的异常。这样处理的可以更具体

  2,如果该段代码中有多个异常,就要有多少个cathc块,对每个异常都要有专门的处理,如果几个异常出现的继承关系那么必须把大的放下面小的放上面,不能在catch最后用Exception来兜底 发生异常应该让程序立刻停掉,进行处理,抛出相应的异常,保证代码的严谨性。

注意:

  在catch中处理时一定要定义具体的处理方式。不要简单的定义一句e.printStackTRace(),也不要简单的就写一句输出语句

 

自定义异常:

因为项目中会出现特有的问题,

而这些问题并未被java所描述并封装对象。

所以对于这些特有的问题可以按照java的对问题封装的思想。

将特有的问题。进行自定义的异常封装。

 

自定义异常必须是自定义类继承Exception

继承Exception原因:

  异常体系有一个特点:因为异常类和异常对象都被抛出。

  他们都具备可抛性。这个可抛性是Throwable这个体系中独有特点。

  只有这个体系中的类和对象才可以被throwsthrow操作。

    throwsthrow的区别:

 

      throws使用在函数上。throws后面跟的异常类,可以跟多个,用逗号隔开。

      throw使用在函数内。throw后跟的是异常对象

 

package test;
/**
 * 自定义异常
 * @author Administrator
 *
 */

public class CustomException {

    public static void main(String[] args) {
        //实例化对象
        Demo demo = new Demo();
    
        try {
            //调用运算方法
            int num =  demo.count(0, -2);
            System.out.println(num);
        } catch (FuShuException e) {//捕捉异常
            //打印异常信息和引发该异常的数字
            e.printStackTrace();
            e.getVlaue();
        }
    }
}

//自定义负数异常
class FuShuException extends Exception{
    private int value;
    FuShuException(String mes){
        //直接调用父类的构造方法
        super(mes);
    }
    FuShuException(String mes,int value){
        super(mes);
        //给记录引发异常的数字
        this.value = value;
    }
    public void getVlaue(){
        System.out.println("出现的负数是:" + value);
    }
}

class Demo{
                            //声明异常
    int count(int a,int b) throws FuShuException{
            if(a < 0 || b < 0)
                //抛出异常
                throw new FuShuException("有出现负数,负数:" + (a < 0 ? a : b),a < 0 ? a : b);
    
        return a + b;
    }
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值