一、 异常:  
1:错误的分类
          1)Error:错误(不可控),一般指的是系统方面的异常,比如 蓝屏,内存溢出,jvm运行环境出现了问题。
          2) Exception:是可控的异常,程序员可以在编写程序时解决的错误。   
          3)两者的父类为Throwable;
2:可以控制的异常:
          Exception:是所有异常的父类,其下面可以派生出很多子类型。
3:异常处理机制。
      在编写程序时,某一块代码可能会某些异常。我们应该对这块
           1) 进行异常处理。怎么处理呢? 
               如下语法:--解决方法
                try{
                    捕捉代码片段出现的异常信息,然后封装成异常对象//可能出
                    现异常的代码块放入try{}中,
                 }catch(异常类型的声明--引用捕捉到的异常对象){
                   //处理异常
               }finally{
                             /*不管try中是否出现异常,都会执行此部分代码。
                              一般都用来用做关闭,释放等操作。
                                try中出现return 也会执行finally中的语句
                             */
               } 
                2)进行处理过程: 我们将可能出现异常的代码块放入try{}中,
                          ①jvm会进行检查try{}中的代码,
                                    如果有异常,jvm就会将异常信息封装成相应的异常对象,
                                    然后转移到catch(){}代码块中进行处理,执行{}中的业务逻辑。
                                    最后会执行finally模块的代码。
                          ②如果try{}中没有异常出现,最后也会执行finally模块 中的逻辑。 
 
         4:catch代码块:
                    ①数量上:可以有1个或多个, 
                    ②执行顺序: 从上到下的catch块使用的异常类型可以是同级别的;
                        如果多个异常类型有父子关系时,那么应该先写子异常,再写父异常。
                      (先写父异常时,编译不通过)先处理子类型异常,再处理父类型异常。

5:finally代码块:
                    ①finally代码块是有没有异常都会执行的,最后执行。
                    ②通常用于关闭某些操作,删除临时文件等;
                    ③不管try有没有异常当程序中有return关键字的时候, 先执行return,再执行finally代码块
        6:throw : 抛出异常对象。
                    概念:有时候,程序中捕获的异常,不想在catch代码块中处理。
            就要往外抛出,抛给调用者(谁调用这个方法谁就是调用者)
            由调用者来处理(需要try/catch),main中的异常最好直接处理。

7:throws:
                     在定义方法时,必须声明要抛出的异常对象的类型
                      throws:就是声明通知调用要处理的异常类型  ,在定义方法处声明抛出的异常类型.
                      throw :抛出异常对象,抛给调用者(方法),让调用者处理.
                  
                         如果throw是运行时异常,可以不用 throws
                         如果throw是编译时异常,必须使用 throws
                         throw new 一个异常对象:
                                         throw new NullPointerException();

8:异常的分类 :
                   ①检查性异常(编译时异常)
                            reg:IO异常
                   ②非检查性异常(运行时异常)
                            reg:
                                    NullPointerException//空指针异常
                                    ArrayIndexOutOfBoundsException//数组索引越界异常
                                    StringIndexOutOfBOundsException//字符串索引超出范围,越界
                                    ClassCastException  //类造型异常
                                    NumberFormatException//数字异常
                                    IllegalArgumentsException//非法参数异常
                 不要把ClassNotFoundException当成运行时异常
           在throw运行时异常对象时,方法处不需要声明throws,因为编译器 会忽略运行时异常。
           当throw编译时异常时,必须在方法处声明throws此对象的类型。
        9:当父类中的方法声明异常时,子类重写方法时可以不声明,也可以声明;
               父类中方法不声明异常,子类不能声明异常;
        10:自定义异常。只需要继承Exception,用系统提供的构造器即可。

二、子类异常继承父类
  子类重写父类方法时,如果父类的方法声明了异常:
          1)子类方法可以不声明该异常;
          2)可以按父类的方法进行声明;
          3)也可以声明父类方法的异常的子类型异常;
             *不能声明父类方法异常的父类型
           例如:public double distance()throws Exception{
           //代码块  
                 }
           4)父类的方法如果没有声明异常 , 子类方法不可以声明异常

Exception的异常分类与处理的更多相关文章

  1. Java异常分类 转载

    Java异常分类 http://blog.csdn.net/woshixuye/article/details/8230407     一.基本概念 看java的异常结构图 Throwable是所有异 ...

  2. java之异常处理、异常分类、Throwable、自定义异常

    参考http://how2j.cn/k/exception/exception-trycatch/336.html 异常处理 try catch 1.将可能抛出FileNotFoundExceptio ...

  3. Java自学-异常处理 异常分类

    Java 中异常的分类 异常分类: 可查异常,运行时异常和错误3种 其中,运行时异常和错误又叫非可查异常 步骤 1 : 可查异常 可查异常: CheckedException 可查异常即必须进行处理的 ...

  4. Java中异常分类和Throw和Throws的区别

    Java中异常分类和Throw和Throws的区别 1.异常分类 Throwable是Java中所有错误和异常的超类.它的下一级是Error和Exception 1.1 Error(错误) Error ...

  5. 异常概念&异常体系和异常分类

    异常概念 异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...

  6. Java异常分类

    一.基本概念 看java的异常结构图 Throwable是所有异常的根,java.lang.ThrowableError是错误,java.lang.ErrorException是异常,java.lan ...

  7. Java异常分类及处理

    1.Throwable是所有异常的根(java.lang.Throwable)2.Error是错误(java.lang.Error) 当程序发生不可控的错误时,程序会报错,Error及其子类的对象不应 ...

  8. 【总结】Java异常分类

    链接:https://www.nowcoder.com/questionTerminal/3ded1983c85c4ae197e005bd31777bc7来源:牛客网 Throwable是所有异常的根 ...

  9. [原创]如果软件在网络磁盘中或移动磁盘中运行时需要解决 exception C0000006 异常问题

    //如果软件在网络磁盘中或移动磁盘中运行时需要利用下面这句命令来解决 exception C0000006 异常问题 {$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FRO ...

随机推荐

  1. 如何配置maven的环境变量

    安装maven后,这是maven的安装路径 打开:我的电脑——右键——属性——高级系统设置——环境变量 第一步:点击“系统变量(S)”下面的“新建(W)...”按钮,在“新建系统变量”中输入变量名MA ...

  2. [记录] C# 版本和.NET 版本以及VS版本的对应关系

    简单的来说:    VS2010 最高用到 .Net Framework4,C# 4.0    VS2015 最高用到 .Net Framework4.6,C# 6.0    VS2017 最高用到 ...

  3. SQLServer ---------- 安装SQLserver数据库

    1.安装SQLserver 数据2008 的地址 https://jingyan.baidu.com/article/948f592434b407d80ef5f97d.html?qq-pf-to=pc ...

  4. Python3+selenium 报错处理:“selenium.common.exceptions.NoAlertPresentException: Message: No alert is active”

    一.说明 在使用python3+selenium写自动升级程序的时侯,碰到一个弹出对话框需要点击确认的场景.弹出的对话框如下图所示. 对于弹框各种资料都说通过switch_to.alert属性获取对话 ...

  5. 第四节:配置的读取、StartUp类、内置依赖注入和扩展改造

    一. 配置的读取 在Asp.Net Core中,有一个 appsettings.json 文件,用于存储相应的配置信息,读取的时,要通过构造函数注入:IConfiguration Configurat ...

  6. Effective.Java第1-11条

    1. 考虑使用静态工厂方法替代构造方法 一个类可以提供一个公共静态工厂方法,它只是返回类实例的静态方法.例如JDK的Boolean的valueOf方法: public final class Bool ...

  7. python 搭建 websocket server 发送 sensor 数据

    搞了几天,顺便把代码贴这里,需要的 python 包: gevent,gevent-websocket,bottle,wiringpi-python 简单说明: - gevent 提供了支持 conc ...

  8. - Permission 运行时权限 总结 翻译 MD

    目录 目录 对运行时权限的一些理解 运行时权限使用案例 开源库:PermissionsDispatcher 注解 使用案例 使用步骤 测试代码 自动生成的类 官方文档:请求权限 Add permiss ...

  9. codeforces#566(Div.2)B

    B.Plus from Picture You have a given picture with size w×hw×h. Determine if the given picture has a ...

  10. Maven中 jar包冲突原理与解决办法

    Maven中jar包冲突是开发过程中比较常见而又令人头疼的问题,我们需要知道 jar包冲突的原理,才能更好的去解决jar包冲突的问题.本文将从jar包冲突的原理和解决两个方面阐述Maven中jar包冲 ...