异常的体系,Throwable常用的方法,异常类

异常的体系:

------------------| Throwable :所有异常或者错误类的超类
------------------| Error 错误:错误一般是由于jvm或者是硬件引发的问题,所以我们一般不会通过代码去处理错误的
------------------| Exception 异常:是需要通过代码去处理的

Throwable常用的方法:

toString() : 返回当前异常对象的完整类名+病态信息
getMessage() : 返回的是创建Throwable传入的字符串信息
printStackTrace() : 打印异常的栈信息

如何区分错误与异常呢?

  1. 如果程序出现了不正常的信息,如果不正常的信息的类名是以Eeeor结尾的,那么肯定是一个错误
  2. 如果是以Exception结尾的,那么肯定就是一个异常

捕获处理要注意的细节:

  1. 如果try块中代码出了异常经过处理之后,那么try-catch块外面的代码可以正常执行。
  2. 如果try块中出了异常的代码,那么在try块中出现异常代码后面的代码是不会执行了。
  3. 一个try块后面是可以跟有多个catch块的,一个try块后面是可以捕获多种异常类型的。
  4. 一个try块可以捕获多种异常的类型,但是捕获的异常类型必须从小到大进行捕获,否则编译报错

抛出处理(throw throws)
抛出处理要注意的细节:

  1. 如果一个方法的内部抛出了一个异常对象,那么必须要在方法上声明抛出。
  2. 如果调用了一个声明抛出异常的方法,那么调用者必须要处理异常
  3. 如果一个方法内部抛出了一个异常对象,那么throw语句后面的代码都不会再执行了(一个方法遇到了throw关键字,该方法也会马上停止执行的)
  4. 在一种情况下,只能抛出一种类型异常对象。

throw 与 throws俩个关键字:

  1. throw关键字是用于方法内部的,throws是用于方法声明上的。
  2. throw关键字是用于方法内部抛出一个异常对象的,throws关键字是用于在方法声明上声明抛出异常类型的
  3. throw关键字后面只能有一个异常对象,throws后面一次可以声明抛出多种类型的异常
    抛出处理的作用在何时使用:

何时使用抛出处理?何时捕获处理?原则是如何?
如果代码是直接与用户打交道遇到了异常千万不要在抛,在抛的话,就给了用户了。
这时候就应该使用捕获处理。

异常类

需求:模拟feiQ上线的时候,如果没有插上网线,就抛出一个没有插上网线的异常,那么就正常显示好友

//自定义异常类的步骤:  自定义一个类继承Exception即可
//自定义一个没有网线的异常类

class NoIpException extends Exception{
    public NoIpException(String message){
         super(message);//调用了Exception一个参数的构造函数
    }
}
public class Demo9 {
    public static void main(String[] args) throws NoIpException {
        String ip="192.168.1.1";
        ip=null;
//        try {
            feiQ(ip);
//
//        }catch (NoIpException e){
//            e.printStackTrace();
//            System.out.println("请插网线");
//        }
        }
        public static void feiQ (String ip) throws NoIpException{
    if(ip==null){
        throw new NoIpException("没有插网线!!!");
    }
    System.out.println("正常显示好友列表........");
}
}
上一篇:Spring框架之@Transactional注解用法(二)


下一篇:如何在Java中的自定义异常中设置我自己的消息,可以检索我的getMessage()但是没有使用构造函数,有什么办法吗?