zoukankan      html  css  js  c++  java
  • java记录3--异常

    异常的分类

    1.Error

    由java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等等,JAVA程序无法对此错误

    try
    {
      //可能出现异常的代码块
    }
    catch(exception1 )
    {
    //产生异常1的处理措施
    }
    catch(exception 2)
    {
    //产生异常2的处理措施
    }
    。。。。
    finally
    {
    //无论是否捕获异常都必须处理的代码
    }

    进行处理

    2.RUNTIME EXCEPTION

    java虚拟机在运行时产生的异常,如0做分母,数组下标越界,其产生比较频繁,处理麻烦,对程序可读性和运行效率影响太大,因此由系统检测

    用户可不做处理

    3.EXCEPTION

    一般程序中可预知的问题,其产生的影响可能会带来意想不到的结果

    因此Java虚拟机要求java程序必须捕获或声明所有的非运行时异常

    //捕获异常相关问题
    
    try
    {
        语句1;//一旦语句1出现异常,则语句2永远得不到执行
        语句2;
    }
    
    catch (exception1 e)
    {......}
    
    catch (exception e)
    {......}
    
    finally{....}//无论try中代码是否抛出异常
    //finally中代码都会得到执行,通常在finally语句可以进行资源的清除工作

    3.throw

    3.1用来抛出异常     格式:throw new 异常名(参数);

    3.2假设f方法抛出了A异常,则f方法由2种方式来处理A异常

    throws A//谁调用f方法,谁处理A异常,本身不处理

    try。。catch//自己处理

    ps:要抛出的异常必须得是throwable的子类

    4.throws

    格式 void f()throws A

    {。。。}

    4.1 throws A表示调用f方法时f方法  可能  会抛出A类异常 , 建议  你调用f方法时最后对可能抛出的异常进行捕捉

    4.2throws A不表示f方法一定会抛出A类异常,不表示调用f方法时,必

    须对A异常进行捕捉

    例如假设A是runtime exception子类异常,可以处理也可以不处理

    class c extends Throwable
    {
        public void f()
        {
            throw new RuntimeException();//不报错
        }
    }
    public class A
    {
        public static void main(String [] args)
        {
            
        }
    }

    ps:1.所有的catch最多只能有一个被执行,也可能所有的catch都没有被执行

    2.先catch子类异常再catch父类异常,如果相反则编译时会报错

    3.重写方法抛出异常的范围不能大于被重写方法排除的异常范围

    //自定义异常A
    class A extends Excepion
    {
    }
    
    //自定义异常B
    class B extends Exception
    {
    }
    
    //自定义异常C
    class C extends Exception
    {
    }
    
    class M
    {
        void f() throws A, B
        {
        }
    }
    
    class N extends M
    {
        void f() throws A,B //可以throws A或B,也可以throws A,B  
    也可以不throws,但不可以throws C
    即"子类覆盖了父类方法时,子类方法抛出异常的范围不能大于父类方法抛出的异常范围"
    { } } class Test { public static void main(String[] args) {} }
  • 相关阅读:
    physicsbased animation阅读计划
    读代码的一点感想
    Paired Joint Coordinates
    坐标变换
    ADO.NET用法示例
    希腊字母读法
    数据库系统概论(第三版)学习笔记
    在网页里让文本框只能输入数字的一种方法。外加回车换Tab (javascript key键的使用)+禁止切换输入法转
    常用的一些javascript小技巧
    在.NET2.0中上传文件操作(解决了上传文件大小和多文件限制)转
  • 原文地址:https://www.cnblogs.com/zhuimingzhenbai/p/12256537.html
Copyright © 2011-2022 走看看