• Java异常处理


    所有的异常都有一个超类throwable;

    throwable有两个子类:Exception和error(一般在重大错误,不能够自行恢复);

    Exception有两个子类:checked和runtime exception异常;

    checked:检查时异常,就是程序代码有的错误会有红色波浪线的异常,在运行之前会提示出来;

    runtime exception:运行时有错误会报出的异常如空指针异常和下标越界异常;

    进行异常处理有以下两个方法:

    1、使用try{}  catch(异常种类){}

    try 里面一般是一整个功能在一起,有时候需要自己进行判断,有时是程序会自动提示需要加上try.....catch进行处理。

    如下面的代码:

    int a=3;
    int b=0;
    System.out.println(a/b);

    System.out.println("除法运算");

    会产生异常:

    Exception in thread "main" java.lang.ArithmeticException: / by zero
    at anli.f.main(f.java:7)

    这个时候如果不处理会报出如下异常,是虚拟机自动处理之后程序终止,后面的程序就不在执行,如果不想程序就此终止可以加上try...catch进行处理;

    try {
    int a = 3;
    int b = 0;
    System.out.println(a / b);
    } catch (Exception e) {
    // TODO: handle exception
    System.out.println("除数不能为0!");
    }
    System.out.println("除法运算");

    输出结果:

    除数不能为0!
    除法运算

    另外还有一种模式:try....catch....finally;不管是否会发生异常都会处理finally的代码块除非用system.exist(0)进行了处理;

    示例如下:

    try {
    int a = 3;
    int b = 0;
    System.out.println(a / b);
    } catch (Exception e) {
    // TODO: handle exception
    System.out.println("除数不能为0!");
    }finally {
    System.out.println("finally代码块");
    }
    System.out.println("除法运算");

    结果:

    除数不能为0!
    finally代码块
    除法运算

    注意:try可以和catch或者finally分别使用,但是不能单独使用

    2、throws和throw;

    throws:抛出异常声明,说明有异常,但不进行处理。抛出异常让程序的调用者进行处理,如果一直都不进行try....catch处理就会最终交给虚拟机处理;

    throw:抛出一个异常,一般用于抛出一个新的异常或者自定义异常;

    用法实例:

    public void div(int a,int b) throws Exception{
    if(b==0){
    throw new Exception("除数不能为零");
    }
    System.out.println(a/b);
    }

    f fm=new f();
    int a=4;
    int b=0;
    try {
    fm.div(a, b);
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.getMessage();//获取异常信息可以有这个和下面一行的方法;
    e.printStackTrace();
    }

    System.out.println("除法运算");

    结果:

    java.lang.Exception: 除数不能为零
    at anli.f.div(f.java:21)
    at anli.f.main(f.java:10)
    除法运算

    注意:可以使用多重try....catch........catch;

    子类异常在前面,父类异常在后面,一般最后的异常一般是exception;

    3、自定义异常类;

    可以自定义一个异常继承一个异常类,如exception或者runtime exception;

    在使用的时候需要使用throw 抛出一个自定义异常;

    如定义一个 AgeException extends Exception{

    里面需要继承父类的构造方法,可以自定义生成;

    };

    在使用的时候只需要在在throw时抛出:

    throw new AgeException("除数不能为零");

    把上面的代码throw new exception改为上面代码,最后会抛出Age Exception;

    4、throw和throws的区别:

    a. 作用不同,throws是声明异常,throw是抛出异常;

    b.作用位置不同,throws是在类后面声明,可以声明抛出多个异常,throw是抛出一个异常对象;

    c.定义字眼不同;

  • 相关阅读:
    pyecharts的版本问题
    世界各国中英文名称映射字典(pyecharts)
    爬取世界疫情数据绘制疫情可视化地图
    好好写,好好干-PHP基础(二)
    自罚一杯-PHP基础(一)
    又是一周-AJAX(三)
    我懒蛋又回来了!-PDO
    退役了退役了-AJAX
    睡觉问题早晚成为我顶头疼的问题。。。-PHP
    其实今天没有欲望..-MySQLi
  • 原文地址:https://www.cnblogs.com/YWJAVA7010/p/9366961.html
Copyright © 2020-2023  润新知