zoukankan      html  css  js  c++  java
  • 4.20Java异常机制

    4.20Java异常机制

    本章内容

    • 异常的定义

    • Java异常处理机制

    • Java异常分类


    什么是异常(Exception n.例外)?

    异常是指软件程序在运行过程中遇到的问题我们称之为异常。

    拷贝文件代码:

    public class Test1{
       public static void main(String[] args){
           //将d:a/.txt复制到e:/a.txt
           /*
           考虑的情况:
           1.文件是否存在
           2.e盘空间大于a.txt文件长度
           3.复制到一般IO流断掉
           */
           if("d:a.txt"这个文件存在){
               if(e盘的空间大于a.txt文件长度){
                   if(文件复制到一半IO流断掉){
                       停止copy,输出:IO流出问题
                  }else {
                       copyFile("d:/a.txt", "e:/a.txt");
                  }
              }else {
                   System.out.println("e盘空间不足!");
              }
          }else {
               System.out.println("a.txt不存在!");
          }
      }
    }

    这种方式的坏处:

    1. 逻辑代码和错误处理代码放在一起!

    2. 程序员本身需要考虑的例外情况较复杂

    Java异常处理机制---try...catch(捕获)

    try{
       copyFile("d:/a.txt", "e:/a.txt");
    }catch(Exception e){
       e.printStackTrace();
    }

    异常机制的本质:

    程序可以安全的退出


    异常的概念

    程序运行过程中出现的非正常现象

    异常处理的概念

    指程序在出现问题时依然可以正确的执行完

    Java的异常处理机制

    特点:

    • 引进很多用来描述和处理异常的类,称为异常类

      • 异常类定义中包含了该异常类的信息和对异常进行处理的方法

    做法:

    • 采用面向对象的方式来处理异常的

    处理过程:

    1. 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE(Java运行时环境)

    2. 捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止

    try{
       //
    }catch(Exception e){
       e.printStaticTrace;
       /*
       Java通过生成异常类对象处理异常,所以一定会生成对象
       */
    }

    异常分类

    如图:---异常类的层次结构(根类下面有两个子类)

    特点:

    • 所有异常对象都是派生与Throwable类的一个实例

    • 内置的异常类不满足要求可以自己创建异常类

    子类特点:

    Error异常不需要处理

    特点:

    • 程序无法处理的错误,表示运行应用程序中较严重问题

    • 大多时候表示的是JVM出现的问题---如内存溢出

    • 这类异常发生通常会选择线程终止

    • Error表明系统JVM处于不可恢复的崩溃状态中,无需管它

    Error类包括:

    Exception

    需要程序员去管的

    RuntimeException---UncheckedException---运行时异常

    编译器不需要处理,运行时会抛出

    CheckedException---已解决异常
    It's a lonely road!!!
  • 相关阅读:
    Lambda+Stream替换集合中每个对象的指定字段值
    bootstrap table的属性sidePagination设置不当导致数据不显示
    fullcalendar从后台获取events报Uncaught TypeError: callback is not a function
    com.sun.mail.smtp.SMTPSendFailedException: 550 Invalid User
    js中复制功能的实现
    List列表排序报空指针异常
    springboot+tomcat不同环境采用不同配置文件
    装饰模式
    Ambari和大数据集群部署(精华)
    Ambari安装和汉化(转)
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14682617.html
Copyright © 2011-2022 走看看