zoukankan      html  css  js  c++  java
  • 异常处理机制

    异常处理五个关键字

        try:用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
        catch:用于捕获异常。catch用来捕获try语句块中发生的异常
        finally:finally语句块总是会被执行。它主要用于回收try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)
        只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句。如果finally中使用了return或者
        throw等终止方法的语句,则不会跳回执行,直接停止。
        throw:用于抛出异常。
        throws:用在方法签名中,用于声明该方法可能抛出的异常
    


    编写多重catch语句块注意事项: catch是用来捕java运行时系统引发的异常 顺序问题:先小后大,即先子类后父类;谁先捕获就报谁的捕获错误,下一个就不会捕获,程序终止

    还可以用throw抛出明确的异常:

    throw ThrowableInstance;

    throws

    如果一个方法可以导致一个异常但不处理它,它必须指定这种行为以使方法的调用者可以保护它们自己
    而不发生异常。要做到这点,我们可以在方法声明中包含一个 throws 子句。

    finally

    finally 子句是可选项,可以有也可以无,但是每个 try 语句至少需要一个 catch 或
    者 finally 子句。

    try, catch,finally ,return 执行顺序

    1.执行try,catch , 给返回值赋值
    2.执行finally
    3.return

    自定义异常

    1. 创建自定义异常类。
    2. 在方法中通过 throw 关键字抛出异常对象。
    3. 如果在当前抛出异常的方法中处理异常,可以使用 try-catch 语句捕获并处理;否则在方法的
      声明处通过 throws 关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
      在出现异常方法的调用者中捕获并处理异常。
    public class 异常 {
        public static void main(String[] args) {
           
            int a = 1;
            int b = 0;
            try{//try监控区域
                if(b == 0) throw new ArithmeticException(); // 通过throw语句抛出异常
                System.out.println("a/b的值是:"+ a/b);
                System.out.println("this will not be printed");
            }
            //ArithmeticException e啥意思
            catch(ArithmeticException e){// catch捕捉异常
                System.out.println("程序出现异常,变量b不能为0!");
            }
            System.out.println("程序正常结束");
    
            // 编写多重catch语句块注意事项:catch是用来捕java运行时系统引发的异常
    // 顺序问题:先小后大,即先子类后父类;谁先捕获就报谁的捕获错误,下一个就不会捕获,程序终止
            try{
                int a1 = 2;
                int b1 = 42 / a1;
                System.out.println("a1 = "+ a1);
                try{
                    if(a1==1){
                        a1 = a1 / (a1-a1);
                    }
                    if(a1==2){
                        int c[] = {1};
                        c[42] = 99;
                    }
    
                }catch (ArrayIndexOutOfBoundsException e){
                    System.out.println("ArrayIndexOutOfBoundsException:"+ e);
                }
            }
            catch(ArithmeticException e){
                System.out.println(" Divide by 0"+ e);;
            }
    
    
            // 还可以用throw抛出明确的异常:throw ThrowableInstance;
    
            //throws
            /**
             如果一个方法可以导致一个异常但不处理它,它必须指定这种行为以使方法的调用者可以保护它们自己
    而不发生异常。要做到这点,我们可以在方法声明中包含一个 throws 子句。
             */
            // finally
            /*
             finally 子句是可选项,可以有也可以无,但是每个 try 语句至少需要一个 catch 或
    者 finally 子句。
    
            */
    
            /*
            try, catch,finally ,return 执行顺序
    1.执行try,catch , 给返回值赋值
    2.执行finally
    3.return 
            */
        
            // 自定义异常
            /*
            创建自定义异常类。
    在方法中通过 throw 关键字抛出异常对象。
    如果在当前抛出异常的方法中处理异常,可以使用 try-catch 语句捕获并处理;否则在方法的
    声明处通过 throws 关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
    在出现异常方法的调用者中捕获并处理异常。
    
            
            */
            }   
    
       
    }
    
    

    这里只写了try-catch 语句,和嵌套try-catch语句,后面的其他用法没写。
    详细请看:狂神说的7.javaSE异常机制

    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    改变Edit的光标(使用CreateCaret,ShowCaret和LoadBitmap三个API函数)
    浅析Delphi Container库(有开源的DCLX)
    Delphi接口的底层实现(接口在内存中仍然有其布局,它依附在对象的内存空间中,有汇编解释)——接口的内存结构图,简单清楚,深刻 good
    Asp.Net在多线程环境下的状态存储问题
    C#程序中注释过多的8条理由
    CentOS 6.4 编译安装LLVM3.3,Clang和Libc++
    Microsoft 2013校园招聘笔试题及解答
    代码契约CodeContract(八)
    T-SQL 临时表、表变量、UNION
    BST&AVL&红黑树简单介绍
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15107922.html
Copyright © 2011-2022 走看看