zoukankan      html  css  js  c++  java
  • Java(15):异常

    异常

    e

    error错误由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。Exception是可以被程序处理的,并且程序应该尽可能去处理这些异常。

    五个关键字:

    try、catch、finall、throw、throws。

    public class Application{
        public static void main(String[] args) {
            int a = 1;
            int b = 0;
    
    
            try {
                int c = a / b;
            }catch (Exception e){
                System.out.println(e);
            }finally {
                // finally 可以不要
                System.out.println("不管怎么样都会执行我");
            }
        }
    
    }
    

    可以写多个catch语句来捕获不同的异常,得注意异常程度必须由低到高(见最上面的示意图):

    public class Application{
        public static void main(String[] args) {
            int a = 1;
            int b = 0;
    
    
            try {
                int c = a / b;
            }catch (Error r){ // 多个异常捕获必须由低到高
                System.out.println("Error");
            }catch (Exception e){
                System.out.println("Exception");
            }catch (Throwable t){
                System.out.println("Throwable");
            } finally {
                // finally 可以不要
                System.out.println("不管怎么样都会执行我");
            }
        }
    
    }
    

    最后的执行结果是打印出“Exception”。

    idea中选中代码、CTRL+ALT+T快捷生成异常代码。

    主动抛出异常。

    throw一般用在方法中抛出异常。然后就可以用try-catch捕获异常,如果在当前代码中不方便使用try-catch捕获异常,那么可以在方法上用throws抛出异常,让其他地方try-catch捕获异常。

    if (b == 0){
       throw new Exception(); // 主动抛出异常
    }
    int c = a / b;
    

    异常假设方法中处理不了这个异常,throws用在方法上抛出异常:

    public class Application{
        public static void main(String[] args) {
            int a = 1;
            int b = 0;
            new Application().test(a, b);
    
        }
        public void test(int a, int b) throws ArithmeticException{ // 方法上throws
            if (b == 0){
                throw new ArithmeticException(); // 主动抛出异常
            }
            System.out.println(a/b);
        }
    
    }
    

    自定义异常

    使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。只需要继承Exception类即可。

    大体有以下几个步骤:

    1. 创建自定义异常类。
    2. 在方法中通过throw关键字抛出异常对象。
    3. 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
    4. 在出现异常方法的调用者中捕获并处理异常。

    。。。。

  • 相关阅读:
    7.1类模板
    异质链表
    8.1多态性
    8.2虚函数
    error: C2664: “zajiao::zajiao(const zajiao &)”: 无法将参数 1 从“const char [12]”转换为“char *”
    #include <QPushButton>
    6.3多重继承
    华为集群后killsql命令和查看mr占用的磁盘空间
    linux的逻辑运算符
    test命令
  • 原文地址:https://www.cnblogs.com/zhangtu/p/14492281.html
Copyright © 2011-2022 走看看