1.异常(Throwable)

Error:严重的错误,不能处理只能避免
Exception:由于使用不当导致的,可以避免的

2.throw关键字

throw:抛出异常
作用:在指定的方法中抛出指定的异常
格式:throw new xxxException("异常产生的原因");
注意:

  • throw关键字必须写在方法内部
  • throw关键字后边new的对象必须是Exception的子类对象
  • throw关键字抛出指定的异常对象,我们就必须处理这个异常对象

例:

  public class NullException {
    public static void main(String[] args) {
        int [] a = null;
        demo(a,0);
    }

    private static int demo(int [] arr , int index) {
        if (arr == null)
        {
            throw new NullPointerException("数组为空");
        }
        int e = arr[index];
        return e;
    }
   }

3.处理异常的方法

throws:可以使用throws关键字抛出异常交给调用者处理,最终交给JVM使用-->中断处理

  格式:方法声明时使用
  修饰符 返回值类型 方法名(参数列表) throws xxxException , aaaException{
        throw new xxxException("");
        throw new aaaException("");
  }

注意:

  • throws关键字必须写在方法声明处
  • throws关键字后面声明的对象必须是Exception或是Exception的子类
  • 调用了一个抛出异常的方法,我们就必须处理抛出的异常
  • 如果抛出的多个异常有子父类的关系,那么直接声明父类异常即可

例:

    public class NullException {
    public static void main(String[] args) {
        int [] a = null;
        demo(a,0);
    }

    private static int demo(int [] arr , int index) throws NullPointerException{
        if (arr == null)
        {
            throw new NullPointerException("数组为空");
        }
        int e = arr[index];
        return e;
    }
   }

try...catch:处理异常

格式:
  try{
     //可能出现异常的代码
   }catch(定义一个异常变量用来接收try中抛出的异常对象)
   {
      //异常的处理逻辑
    }

finally语句:无论程序是否异常都会执行
注意:finally语句有return语句,永远返回finally语句中的值。
例:

  public class NullException {
    public static void main(String[] args) {
        int [] a = null;
        try{
            demo(a,0);
        }catch (NullPointerException e){
            System.out.println("当前数组为空");
        }
        finally {
            System.out.println("我finally语句执行了!");
        }
    }

    private static int demo(int [] arr , int index)  {
        int e = arr[index];
        return e;
    }
  }

4.Throwable类中的异常处理方法

  String getMessage()       返回异常的简短信息
  String toString()         返回异常的详细信息
  void printStackTrace()    返回异常的最详细的信息

5.异常的注意事项

多个异常捕获:

  • 多个异常分别处理
  • 多个异常一次捕获,多次处理
  • 多个异常一次捕获,一次处理

子父类异常:

  • 父类异常是什么样,子类异常就是什么样。

6.自定义异常类

  格式:
     public class xxxException extends Exception/RuntimeException {
               添加一个空参构造方法
               添加一个带异常信息的构造方法
     }

例:

  自定义异常类:
  public class MyException extends Exception {
    public MyException() {
        super();
    }

    public MyException(String message) {
        super(message);
    }
  }
  -------------------------------------------------
  使用:
  import java.util.Scanner;

  public class DemoException {
    static String [] user= {"张三","里斯","王五"};
    public static void main(String[] args) throws MyException {
        System.out.println("请输入要注册的用户名:");
        check(new Scanner(System.in).next());
    }
    public static void check(String name) throws MyException {
        for (int i = 0; i < user.length; i++) {
            if(user[i].equals(name))
            {
                throw new MyException("您的用户名已经被注册");
            }
        }
        System.out.println("恭喜您,注册成功!");
    }
  }
Last modification:May 29th, 2020 at 01:48 pm
如果觉得我的文章对你有用,请随意赞赏