异常基本知识大总结

1.异常是什么?

    是对问题的描述。讲问题进行对象的封装。

2.异常体系:

          Throwable
            --Error
            --Exception
                --RuntimeException
  2.1异常体系的特点:

    异常体系中的所有类以及建立的对象都具备可抛性,也就是说可以被throw和throws关键字所操作。

3.throw和throws的用法:
    throw定义在函数内,用于抛出异常对象;
    throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。
    当函数内有throws抛出异常对象,并未进行try处理,必须在函数上声明,否则编译失败。
    注意,RuntimeException除外,函数内如果抛出的RuntimeException异常,函数上可以不用声明。
    如果函数声明了异常,调用者需要进行处理,处理方法可以throws可以try.

4.异常有两种:
    编译时被检测异常
        该异常自爱编译时,如果没有处理(没有抛出也没有try,编译失败。)
    运行时异常(编译时不检测)
        在编译时,不需要处理,编译器不检测。
        该异常的发生,建议不处理,让程序停止,需要对代码进行修正。

  处理语句:
  try
  {
      需要被检测代码
  }
  catch
  {
     处理异常的代码
  }
  finally
  {
      一定会执行的代码语句
  }
5.异常的三种格式:
  第一种:
  try{}
  catch {}
  第二种:
  try{}
  catch {}
  finally{}
第三种:
  try{}
  finally{ //关资源}
注意:
1.finally中定义的通常是,关闭自源代码。因为资源必须被释放
2.finally只有一种情况不会执行就是System。exit(0);finally不会执行。

6.自定义异常:
    继承Exception或者继承RuntimeException
    1.为了让自定义类具备可抛性。
    2.让该类具备操作异常的共性方法。   
    当要自定义异常的信息时,可以使用父类已经定义好的功能。
    将异常信息传递给父类的构造函数。
    class MyException extends Exception
    {
        MyException(String message)
        {
            super(message);
        }
    }
 自定义异常时按照Java的面向对象思想将程序中出现的特有问题进行封装。

7.异常的好处:
    1.讲问题进行封装
    2.将正常流程代码和问题代码相分离,方便于阅读。

8.异常的处理原则:
    1.处理方式有两种:try或者throws。
    2.调用到抛出异常的功能时,抛出多个,就处理几个
    一个try对应多个catch
    3.多个catch,父类的catch放到最下面。
    4.catch内,需要定义针对性的处理方式,不需要简单的定义printStackTrace或者输出语句。也不要不写
        当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。
        try
        {
            throw new AException();
        }
        catch(AException e)
        {
            throw e;
        }

如果异常处理不了,但并不属于该功能出现的异常。
        可以将异常转换后,再抛出和该功能相关的异常。       
        或者异常可以处理,当需要将异常产生的和本功能相关的问题提供出去,让调用者知道,并处理。
        try
        {
            throw new AException();
        }
        catch(AException e)
        {
            对AException处理,
            throw new BException;
        }
    比如:汇款的例子。

9.异常的注意事项:
    在子父类覆盖时;
    1.子类抛出的异常必须是父类的子类或者子集。
    2.如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛。

时间: 2024-08-21 20:33:40

异常基本知识大总结的相关文章

FPGA知识大梳理(四)FPGA中的复位系统大汇总

本文整合特权(吴厚航)和coyoo(王敏志)两位大神的博文.我也很推崇这两位大神的书籍,特权的书籍要偏基础一下,大家不要一听我这么说就想买coyoo的.我还是那一句话,做技术就要step by step.闲言少叙,直入正题. 一,异步复位 先看这个电路,就是异步复位的例子.reset使用了reg的复位端 用代码实现的话是这个样子 1 module reset_test ( 2 clk , 3 rst_n , 4 i_data, 5 o_data 6 ); 7 8 input clk ; 9 in

Object-c 数据存储知识大聚会

通常程序在运行中或者程序结束之后,需要保存一些信息,而且需要持久化存储信息,比如登陆信息.视频播放记录.收藏记录等等,那么我们可以采用以下几种方式对数据进行持久化保存. 1.文件 2.plist 3.归档 4.NSUserDefaults 5.数据库 [Plist](文件的一种) <1> 什么是plist文件, plist文件的作用 1.plist文件:property list  属性列表文件,文件的内容只能是 NSString NSNumber NSDate NSData NSArray

转帖--计算机网络基础知识大总汇 https://www.jianshu.com/p/674fb7ec1e2c?utm_campaign=maleskine&amp;utm_content=note&amp;utm_medium=seo_notes&amp;utm_source=recommendation

计算机网络基础知识大总汇 龙猫小爷 关注 2016.09.14 23:01* 字数 12761 阅读 30639评论 35喜欢 720 一.什么是TCP/IP 网络和协议 1.     TCP/IP是一类协议系统,它是一套支持网络通信的协议集合.网络是计算机或类似计算机的设备之间通过常用的传输介质进行通信的集合. 2.     网络协议就是一套通用规则,用来帮助定义复杂数据传输的过程.数据传输从一台计算机上的应用程序开始,通过计算机网络硬件,经过传输介质到正确目的地,然后上传到目的地计算机网络硬

java 异常基础知识以及一些面试题讲解

java是面向对象设计语言,所以异常在java中也封装了成类,而我们只要知道如何处理异常就可以, 异常概述 异常:异常就是Java程序在运行过程中出现的错误. 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象.其实就是Java对不正常情况进行描述后的对象体现 异常分类 程序的异常:Throwable 严重问题:Error 我们不处理.这种问题一般都是很严重的,比如说内存溢出. 问题:Exception 编译期问题:不是RuntimeException

php知识大集合(自用)

//语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH变量名建议用下划线方式分隔 // $var_name函数名建议用驼峰命名法 // varName定界符建议全大写 // <<<DING, <<<'DING'文件名建议全小写和下划线.数字 // func_name.php私有属性名.方法名建议加下划线 // private $_name

FPGA知识大梳理(一)对FPGA行业的一点感言

今天想开始把这FPGA行业的知识点做一个大整理,从个人感想,到语法,到器件基础,难点攻克,到项目应用.把自己这几年接触到的知识做一个全面的回顾,看看自己这几年走过的路. 人生无常,几年的跌跌撞撞勉强算是在FPGA行业大门前.之前一直都是看别人的感言,逛别人的论坛笔记.或许自己应该有一个突破. 我经常把工程师比喻成农民伯伯,相同之处有两点,第一他们都是沉默寡言 老老实实的辛勤的工作者.第二,技术的世界像耕地一样,你无法投机取巧,也没有捷径,所有的知识点都需要你脚踏实地的去开辟.你多努力一点就回报多

CSS重要属性之 margin 属性知识大整合

以下的分享是本人最近几天学习了margin知识后,大有启发,感觉以前对margin的了解简直太浅薄.所以写成以下文章,一是供自己整理思路:二是把知识分享出来,避免各位对margin属性的误解.内容可能会有点多,但都是精华,希望大家耐心学习. 以下的分享会分为如下内容: 1.margin 属性的简单介绍 1.1:普通流的 margin 百分比设置 1.2:绝对定位的 margin 百分比设置 2.margin 无法适用的元素 3.外边距折叠 (Collapsing margins) 3.1:Col

开发Android app必备知识大分享

开发一个完整的android app需要掌握哪些知识?现在让麦子学院的android开发的老师给大家详细的介绍下android app开发需要哪些知识?大体来说,一个app从规划到终究完结需求你懂得以下几个必要方面: 1.前期需求计划与信息--你需求拟定出一个完好的需求文档,功用文档,流程图,时序图. 2.交互规划.UI规划--规划出基本且完善的原型图和app根底的交互规划作用,以后再依据这些规划出完好的UI界面并学会切图,一些需求做自适应的素材图像需求做点9patch. 这儿还需求你懂得px,

知识大全集

1. struts1的Action是线程不安全的,struts2却是安全的 2.spring的主要作用在于使j2ee的开发变得简单 3.ExtJs与jQuery优缺点 ext: 100%面向对象和组件化的思想,一致的语法,全局的命名空间 Ext简化了很多工作,让开发更简洁,更方便,但也带来了很多麻烦,给我们留下了更小的选择空间, 缺点: 为重量级的框架(包含大量UI),体积大.较复杂. jquery: 优点: 体积小 jQuery兼容性良好 局域网里面我们可以使用EXT,但是在互联网上请优先jQ