异常

异常

  1. 什么是异常

    异常指程序运行中出现的不期而遇的各种状况,文件找不到、网络连接失败、非法参数等。

    检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。

    运行时异常:可能被程序员避免

    错误ERROR:错误不是异常,而是脱离程序员控制的问题,比如栈溢出

  2. 异常体系结构

    Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。

    在java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception

    Error类对象由java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关

    Virtual MachineError ,当JVM不再有继续执行操作所需要的内存资源时,将出现OutOfMemoryError,这些异常发生时,JVM一般会选择线程终止。

    Exception: 运行时异常和非运行时异常,一般由程序逻辑错误引起的,从逻辑表面避免。

  3. Java异常处理机制

    抛出异常、捕获异常

    异常处理五个关键字try\catch\finally\throw\throws

  4. 处理异常

    package com.exception;
    
    public class Demo01 {
        public static void main(String[] args) {
          //  new Demo01().a();
    
        }
        /*
        public void a(){
            b();
        }
        public void b(){
            a();
        }
         */
    }
    
    
    
    package com.exception;
    
    public class Test {
        public static void main(String[] args) {
            int a = 1;
            int b = 0;
            //try、catch是必须要的东西,可以不要finally 假设IO资源,关闭!
            try {//try监控区域
                System.out.println(a / b);
            } catch (Error e) { //catch 捕获异常 参数:想要捕获的异常类型
                System.out.println("Error");
            } catch(Exception e){
                System.out.println("Exception");
            }catch(Throwable t){}
                finally
             { //处理善后工作,无论出不出异常,fianlly里面的话终究会被执行
                System.out.println("finally");
            }
    
        }
    }
    
    
    package com.exception;
    
    public class Test2 {
        public static void main(String[] args) {
            //如果不用try catch,遇到错误程序直接停止,捕获后,程序会继续往下执行,想办法把错误在catch里面把他处理了
            try {
                new Test2().test(1, 0);
            } catch (ArithmeticException e) {
                e.printStackTrace();
            } finally {
            }
        }
    
        /*
           //Ctrl+Alt+T 自动抛出异常
           try {
               if(b==0){ //主动抛出异常 throw 注意和throws区分
                   throw new ArithmeticException(); //主动抛出异常
               }
               System.out.println(a/b);
           } catch (Exception e) {
               e.printStackTrace(); //打印错误栈信息
           } finally {
           }
       }
         */
        //假设这个方法中,处理不了这个异常,方法上抛出异常,上面需要把它捕获
        public void test(int a, int b) throws ArithmeticException{
            if (b == 0) {
                throw new ArithmeticException(); //主动抛出异常,一般在方法中使用
            }
        }
    }
    
    
    
  5. 自定义异常

posted @ 2021-05-26 00:02  Big_chili  阅读(111)  评论(0)    收藏  举报