zoukankan      html  css  js  c++  java
  • 异常

    一.概述

    1、生活中的异常
         生活中不正常的事件。
    2、程序中的异常
        程序在运行时出现的错误!
        程序中异常以类的方式表示,当程序中出现异常时,就是产生了某种异常类的对象。
        而异常对象必须进行捕获并处理,如果不捕获,则异常对象由JVM处理。
        而JVM处理异常的方式为:把异常信息输出在控制台,并终止程序。

    二.异常继承结构

    1.异常结构继承结构图


    2、异常的分类
    1) 运行时异常 :RuntimeException及子类。不强制处理
    2)编译异常  :Exception类及非RuntimeException的子类。必须处理,如果不处理则引发编译错误

    三.异常处理的第一种方法throws

    1、throws关键词的使用:在方法上声明异常,此方法没有处理异常。由调用者处理
    语法:
    访问修饰符   返回值类型  方法名(参数列表)throws 异常类型,异常类型{方法体}

    1 public class Test{
    2    public static void main(String[] args) throws FileNotFoundException{
    3       getIO();
    4       System.out.println("程序结束");
    5    }
    6    public static void getIO() throws FileNotFoundException{
    7       FileInputStream in = new FileInputStream("d:/a.txt");
    8    }
    9 }

    四.处理异常的第二种方法try catch

    1、try catch语法结构

    try{

    可以会出现异常的代码。

    }catch(异常类型  变量名){  //捕获对应类型的异常对象,保证后续代码继续执行。

    }
    2、try catch的执行顺序

    2.1:try中的代码 没有产生异常,则catch不执行,而执行try-catch后的代码

    2. 2 :try中的某行代码产生了异常,则try中的后续代码不再执行,而到对应异常类型的catch执行,执行完catch后,执行try-catch后的代码

    3、try块中带有多个catch时的注意事项
    如果多个catch之间的异常类型之间有继承关系,则先子后父。

    异常对象:取得异常描述信息:getMessage();取得异常的堆栈信息:printStackTrace();

    五.异常的finally语块

    1、finally语句块的含义

    在try-catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行


    2、try,catch,finally三个关键词的执行顺序

    3、何种情况下不执行finally块

    异常处理代码中执行System.exit(1)退出Java虚拟机

    六.final,finalize,finally区别

    final:java中的关键字,修饰符。
        1)、可以修饰类
        如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承。    
        2)、 可以修饰方法
            被声明final的方法,不能被子类重写。
       3)、修饰变量,
            如果将变量或者方法声明为final,可以保证它们在使用中不被改变.  

     2 finally:java的一种异常处理机制。。finally 结构使代码总会执行,而不管有无异常发生。

     3  finalize:Java中的一个方法名。

        Java技术使用finalize()方法在垃圾收集器将对象从内存中清除出去前,做必要的清理工作。
         这个方法是由垃圾收集器在确定这个对象没有被引用时 对这个对象调用的。
         它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。
         finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

    七.手动抛异常throws

    1、throw 异常对象
    当程序中的某个代码产生异常:生成一个异常的对象,并抛出
    异常都在代码里产生的,throw new  异常类型();
    使用throw关键词抛出异常对象。
    1) 可以抛出运行时异常: 可以不处理
    2) 抛出编译异常: 必须处理。
    2 当方法中抛出异常后要对此异常进行处理
    1)、 throws在方法上添加异常的声明。
    2) 、try-catch进行异常的捕获。

    八.自定义异常(代码开发中常用)

    1、自定义异常的语法
    访问修饰符   class 类名  extends Exception或其子类{}

     1 /*
     2 *自定义异常类继承自某个异常类
     3 *可以继承运行时异常:异常类可以不处理
     4 *可以继承编译异常:异常类必须处理
     5 *产生自定义异常类型:需要用throw
     6 */
     7 public class AgeException extends Exception{
     8    public AgeException(){
     9       super();
    10    }
    11    public AgeException(String message){
    12       super(message);
    13    }
    14 }

    2 、产生自定义异常一定与throw关键词一起使用

     1 public class Student(){
     2    private int age;
     3    public int getAge(){
     4       return age; 
     5    }
     6    public void setAge(int age) throws AgeException{
     7       if(age >= 18&& age<=50){
     8          this.age = age;
     9       }else{
    10          //产生一个异常对象,手动产生异常对象,并抛出
    11          /*
    12          *抛出编译异常,则必须捕获或声明
    13          */
    14          throw new AgeException("年龄必须为18~50之间");
    15       }
    16    }
    17 }
  • 相关阅读:
    基于SVM的数字识别
    Python3 uniform() 函数
    使用贝叶斯分类器从个人广告中获取区域倾向
    logistic回归预测病马死亡率
    python3报错解决办法:TypeError: 'range' object doesn't support item deletion
    python机器学习实战 getA()函数详解
    python中的scatter()方法
    Python split()方法
    Python strip()方法
    贝叶斯垃圾邮件过滤
  • 原文地址:https://www.cnblogs.com/wangzhengyu/p/8532494.html
Copyright © 2011-2022 走看看