zoukankan      html  css  js  c++  java
  • Java的异常Exception----(最简单明了的总结)

    1、什么是异常?

       程序开发和运行过程中会出现编译错误和运行错误。编译错误容易被发现并排除,而运行错误(逻辑错误和异常)很难预料。因此为了程序的稳定性和可靠性,就需要对程序异常处理和保护。
    

    异常( Exception ):正常程序流程所不能处理或者没有处理的异常情况或异常事件。
    2、为什么要使用异常?
    传统的程序设计中会像下面的伪代码形式来处理错误:

                执行一个任务
    
          if   前一个任务未能正确执行
    
               执行错误处理
    
              执行下一个任务
    
         if   前一个任务未能正确执行
    
             执行错误处理
    

    而这样只会让程序更加复杂!
    3、异常的分类
    <1>根据异常在编译时是否被检测来分,异常可以分为两类:受检异常(CheckedException)与非受检异常(UncheckedException)。
    <2>非受检异常不能在编译时检测到。非受检异常包括运行时异常(RuntimeException)和错误(Error)。
    错误指的是致命性错误,常常无法处理。
    <3>根据异常的严重性,可以分为可以处理的异常和错误异常。
    异常以类的形式封装。程序可以处理的异常对应的类是java.lang.Exception及其子类。
    运行时异常对应的类是java.lang.RuntimeException。
    错误异常对应的类是java.lang.Error

    5、异常的产生
    <1>可以由 Java虚拟机在执行程序时自动发现并产生异常。
    <2>也可以在程序中显式地生成异常,这种方法称为抛出异常(ThrowExceptions)。抛出异常采用throw语句,格式如下:

    throw new ArithmeticException( );
    或者:
    ArithmeticException e=new ArithmeticException( );
    throw e;
    6、异常的处理
    <1>捕捉异常(try_catch_finally语句)
    try{
    //可能产生异常的语句;
    }catch(Exception1 e1){
    //处理语句1;
    }catch(Exception2 e2){
    //处理语句2;
    }finally{
    //语句序列;
    }
    /*
    1)catch语句块可以有多个;
    2)catch语句块和finally语句块可以同时存在,也可以只有其一;
    3)如果发生异常,则会跳转到捕捉对应异常的catch语句块,发生异常语句之后的语句序列不会被执行。
    4)不管异常是否发生,finally语句块总是会被执行,除非碰到强制退出程序的System.exit(0)语句;
    5)如果try语句块或catch语句块中有return语句,则会执行完finally语句块再执行返回。
    */
    一个demo:
    public class J_ExceptionCatch
    {
    public static void main(String args[ ])
    {
    try
    {
    System.out.println("try语句块");
    throw new Exception( );
    }
    catch(Exception e)
    {
    System.err.println("catch语句块");
    e.printStackTrace( );
    }
    finally
    {
    System.out.println("finally语句块");
    } // try-catch-finally结构结束
    } // 方法main结束
    } // 类J_ExceptionCatch结束

    /*运行流程:
    1.try语句块捕捉throw的异常
    2.跳转到相关的catch语句块
    3.最后执行finally语句块的内容
    */
    <2>throws抛出异常
    public class Test{
    public static void main(String[] args) throws IOException{
    FileInputStream fis = new FileInputStream("a.txt");
    }
    }
    //上面的main方法throws了IOException,声明但不去处理,所以在运行之后,
    //该异常就会交给JVM处理,程序一旦遇到该异常,就会打印该异常的跟踪栈信息
    //并结束程序

  • 相关阅读:
    shift and/or 算法
    FFT求解字符串匹配
    hdu 6981/ 2021“MINIEYE杯”中国大学生算法设计超级联赛(3)1009 Rise in Price(剪枝,dp合并)
    Rancher监控指标一文干到底(workload metrics)
    RocketMQ详解(二)启动运行原理
    新人如何快速剖析源码
    RocketMQ详解(三)核心设计原理(待完善)
    windows powershell下载文件的4种方式
    windows 调用bat脚本时pause处理
    python3 中的b''解析
  • 原文地址:https://www.cnblogs.com/yds1314/p/13927654.html
Copyright © 2011-2022 走看看