zoukankan      html  css  js  c++  java
  • JAVA 异常处理

    一.异常的概述

    java异常是处理程序中错误的一种机制, 错误通常指的是程序在运行的过程中发生的一些异常事件, 比如0作为除数, 数组下标越界, 流读取的文件不存在。设计程序的时候应该在异常发生的时候能友好的处理一下这些异常, java中出现的异常事件都可以生成一个异常类的对象, 这个对象将异常发生的信息封装起来交给java虚拟机引擎去处理, 这个过程称为抛出(throw)异常,当java虚拟机接收到异常对象, 会寻找能处理这一异常的代码, 这个过程称为捕获(catch)异常。

    JAVA中把每一种异常都封装成了一个类。

    自定义异常类

    public class MyException extends Exception{
        public MyException() {
            super();
        }
    }

    实例化异常

    MyException e = new MyException("关于异常的描述");
    
    System.out.println(e.getMessage);    //    打印"关于异常的描述"

    二.异常的分类

    Trowable类是所有异常的父类,该类的两个直接子类是Error(错误)类和Exception(异常)类。

    1.Exception类:指可以捕获的异常。可分为两种:

    RuntimeException:可能出现的异常,经常出现,可以处理,也可以不处理,即可不用catch;

    非RuntimeException:一定出现的异常,必须catch;

    2.Error类:系统错误,虚拟机错误。

    三.异常的捕获与处理

    1.try...catch 语句

    try {
        //需要正常执行的语句
    }catch(Exception e){
        //对异常进行处理的语句
        e.printStackTrace();//打印输出这个错误的一串信息
    }

    2.try...catch...finally语句

    try {
        //需要正常执行的语句
    }catch(Exception e){
        //对异常进行处理的语句
    }finally{
        //一定会被处理的语句
    }

    在try中使用return也会执行finally语句,finally语句通常用于执行垃圾回收、释放资源等操作。

    注意:子类异常的捕获语句不能写在父类捕获语句的下面。

    四.声明异常

    对于程序发生的异常,除了可以使用try...catch语句外,还可以使用throws声明或throw语句抛出异常。

    1.throws 将某个方法的异常抛出,谁调用这个方法,谁去处理这个异常,当用在main方法时必须处理,否则就会把异常打印出来。

    2.throw 通常情况下,程序发生错误时系统会自动抛出异常,而有时希望程序自行抛出异常,可以使用throw语句来实现。

    例如打印3除以0的异常:

    public class Test{
        public static void main(String[] args) throws Exception {
            int a = 3;
            int b = 0;
            chufa(a,b);            
        }
        public static void chufa(int a,int b) throws Exception{
            if(b == 0) {
                throw new Exception("关于错误的描述");
            }else {
                System.out.println(a / b);
            }      
        }        
    }
    打印结果:
    Exception in thread "main" java.lang.Exception: 关于错误的描述
        at zuoye.Test.chufa(Test.java:17)  //17代表问题代码所在的行;
        at zuoye.Test.main(Test.java:12)

     五.方法重写中的异常

    子类重写父类方法时可不抛出父类方法异常,如果抛出异常,需要抛出同类型异常或子类异常。

  • 相关阅读:
    bzoj1615 [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机
    bzoj3402 [Usaco2009 Open]Hide and Seek 捉迷藏
    CF B. Planning The Expedition
    Codeforces ~ 1009C ~ Annoying Present (贪心)
    Codeforces Round#498(Div.3)D. Two Strings Swaps
    牛客Another Distinct Values
    牛客多校第四场 G Maximum Mode
    可持化永久树 的 STL ( rope )
    KMP算法 (字符串的匹配)
    求(3+开根5) N次方的整数部分最后3位
  • 原文地址:https://www.cnblogs.com/wyc1991/p/9022380.html
Copyright © 2011-2022 走看看