zoukankan      html  css  js  c++  java
  • 第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 点赞
  • 相关阅读:
    STL:set/multiset用法详解
    STL:list用法详解
    STL:deque用法详解
    STL:vector容器用法详解
    Axure RP chrome插件显示已损坏或者无法安装的解决方法
    怎样知道自己机器的出口网关IP(即外部IP)
    [Selenium]怎样验证页面是否有无变化
    [Selenium]刷新页面 Refresh page
    [SoapUI]怎样获取隐藏元素的文本内容Get text of hidden element
    [SoapUI]怎样从应答报文中获取某个字段的值,然后用其改写某个变量
  • 原文地址:https://www.cnblogs.com/dashucoding/p/9557894.html
Copyright © 2011-2022 走看看