• 第34节:Java当中的异常


    标题图

    Java当中的异常

    了解Java当中的异常,那么什么是异常呢?异常又有什么分类呢?异常中的特殊结构:try...catch...finally 结构的使用方法。

    异常是一种对象,是靠虚拟机产生的,异常中断了正常指令流(程序靠着一个又一个指令)的事件,异常是运行时出现的。在Java中编译上出现的错误为所谓的语法上等的错误,而异常是编译通过的,但在运行时产生的,和编译是没有什么关系的。

    异常会中断过程,后面就不再运行

    异常是一个对象,对象对应相应的异常类,这些类是 jdk 提供的,异常的分类为Throwable父类(所有的异常类都是这个类的子类),ThrowableException(代表所谓异常,Exception还有很多子类,如:RuntimeException),Error(错误,一旦产生错误,虚拟机关闭,一旦产生Error,虚拟机退出)

    Exception分为两大类,运行时异常和编译时异常。

    运行时异常的案例:

    // uncheck exception
    class Demo{
     public static void mian(String args[]){
      int i = i / 0;
      System.out.println(i);
     }
    }

    编译时异常的案例:

    // check exception
    // 必须对其进行捕捉或者抛出以便声明
    class Demo{
     public static void mian(String args[]){
      Thread.sleep(1000);
     }
    }

    RuntimeException 以及RuntimeException的子类为uncheck exception,除了RuntimeException以及RuntimeException的子类,都为check exception

    异常中的特殊结构:try…catch…finally结构

    class Demo{
     public static void mian(String args[]){
     try{
       // 有可能出现异常的代码放进try中,出现异常后,后面的代码不再运行
       int i = i / 0;
       System.out.println(2); // 不再运行
      }catch(Exception e){ // 出现异常进入到catch运行
       // 对产生异常的代码进行捕捉,打印异常信息
        e.printStackTrace();
       }
      System.out.println(i);
     }
    }
    // check 添加后就可以运行了
    class Demo{
     public static void mian(String args[]){
      try{
       Thread.sleep(1000);
      }catch{
       e.printStackTrace();
      }
     }
    }

    finally的加入(finally里面的代码都运行)

    try{
     代码;
    }catch(Exception e){
     e.printStackTrace();
    }finally{
     // 这里的代码这么样都运行,出不出异常都运行
    }

    异常分ErrorException两大类,程序员对Error是没有办法的,只能改代码,但对Exception是可以处理的,Java中的异常处理机制是对系统的健壮性的体现,使用代码结构可以处理异常的代码,记住使用结构:try...catch...finally

    throw和throws的作用

    throw 案例

    class User{
     private int age;
     public void setAge(int age){
      if(age < 0){
       // 如果年龄为负数,创建异常对象
       RuntimeException e = new RuntimeException("年龄不能为负数");
       // 会在运行时抛出这个异常对象,显示 年龄不能为负数
       throw e;
      }
      this.age = age;
     }
    }

    出现异常,必须对其进行捕捉(try...catch...finally结构)或声明(throws

    throws案例

    class User{
     private int age;
     public void setAge(int age) throws Exception{
      if(age < 0){
       // 如果年龄为负数,创建异常对象
       RuntimeException e = new RuntimeException("年龄不能为负数");
       // 会在运行时抛出这个异常对象,显示 年龄不能为负数
       throw e;
      }
      this.age = age;
     }
    }

    throws的作用,声明异常,谁调用谁处理。怎么理解,谁调用谁处理呢?

    // 测试类,创建对象,进行调用,那么就由这个调用者来处理
    User user = new User();
    try{
     user.setAge(-10);
    }catch(Exception e){
     System.out.println(e);
    }

    谁调用我的时候谁就去处理,如上代码解释。throw的作用是生成异常对象,对Java虚拟机抛出异常,throws的作用是声明一个函数有可能生成异常,但不在这个函数进行处理,而是通过调用它的对象,进行处理。

    结语

    • 下面我将继续对JavaAndroid中的其他知识 深入讲解 ,有兴趣可以继续关注
    • 小礼物走一走 or 点赞
  • 相关阅读:
    POI使用介绍
    Git的使用简介
    SOA架构搭建---duboo+zookeeper+SSM实现
    分布式事务介绍
    兼容安卓微信调用摄像头
    cookie
    js对手机软键盘的监听
    input 改变placeholder默认样式
    VisualVm使用JMX的方式连接远程JVM
    update批量根据条件更新
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11932480.html
Copyright © 2020-2023  润新知