array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 异常处理(throw,throws,try,catch,finally) - 爱码网

一、异常

    1、定义:程序在运行时出现的不正确的情况。
    2、由来:问题也是生活中的事物,也可以被Java描述,并被封装成对象。
        其实就是Java对不正常情况进行描述后的对象体现。

    3、划分:Java对于异常的划分分为两种:一种是严重的划分、一种是非严重的划分。
        严重的异常,Java使用 Eroor 类进行封装。
        非严重的异常,Java使用 Exception 类进行封装。

    Error: 对于error,我们一般不使用针对性的代码对其进行处理。
    Exception: 对于exception, 我们一般会编写针对性的代码对其进行处理。

  Throwable :
      |--Error
      |--Exception

二、异常的处理

    1、捕捉:

      1)、Java给我们提供了捕获异常的语句: Try{须要被检测的代码}
          catch(异常类1 变量名){异常处理方法1}
          catch(异常类2 变量名){异常处理方法2}
          ....
          finally{一定会执行的语句}

      2)、对捕获到的异常对象的常见操作:
          (1)、getMessage()方法 :Throwbble中定义的返回异常信息的方法: String getMessage(){}
          (2)、toString()方法 :在Object中定义,在异常类中重写的返回字符型信息的方法: String toString(){}
          (3)、printStackTrace()方法:throwable中定义的打印异常信息流的方法: void printStackTrace(){}
        其实jvm默认的处理方法就是在调用 printStackTrace()方法。

    2、声明(抛出)

      1)、Java给我们提供了throw 和 throws关键字来抛出异常。

      2)、对于函数中含有可能出现异常的语句时,应在函数上使用 throws     异常类名   来声明(抛出)这个异常。(表明此处可能发生异常,

        如果发生,抛给调用函数)
          此举 强迫调用函数在调用处 处理异常(捕捉或者声明),增加安全性。

    3、注意: 一旦程序被抓住处理了(try catch),程序会继续往下执行。


三、对多异常的处理

    1、在函数上声明(抛出)异常时,尽量声明的更具体(也就是声明子类异常),这样, 在调用函数中处理异常的时候也可以处理的更具体

    2、处理的原则 :对方声明几个异常, 就应该有几个 catch块儿。
      如果几个catch块的异常类之间有继承关系,则 :父类对象的catch块儿放下面。


      建议: 在catch中对异常进行处理的时候,要有具体的处理方法, 不要就是一件简单的 输出打印语句, 或者一个 e.printStackTrace(),


四、自定义异常

    原因:项目中会有一些的特殊的问题,Java并未进行封装,所以我们可以按照Java封装异常的的方法来对这些异常进行自定义的异常封装。

    创建方法:创建新的异常类的方法:定义一个新的异常类,并且此类必须要继承至Exception类。
        for example : class FuShuException extends Exception 。

    使用方法:在使用时,如果有可能会发生我们自定义的异常的时候, 我们就应当手动的写语句进行判断,当判断符合要求时就

        通过 throw 关键字来人为的从方法内部抛出异常对象。


        当我们从方法内部抛出异常之后,就必须对这个异常进行处理(要么在方法上进行声明(抛出), 或者进行try ()catch{})。


        但是在一般的时候,我们都将这个内部抛出的方法做声明处理。

   注意:我们自定义异常类的时候,就必须继承至 Exception 类,所以就继承了其中的方法,这个方法可以直接使用 也可以重写 ,

        我们还可以直接定义其他的特有的方法。

    继承Exception 的原因: 因为我的异常体系有一个特点:异常类 和异常对象 都具有可抛性(被 throw 和throws操作)。 而这个可抛性是异常类的特有特点。


五、throw 和throws 的区别:

    1、throws:使用在函数上, 后面跟的是异常类,可以跟多个,使用逗号隔开。


    2、throw :使用在函数内部, 后面跟的是异常对象。


六、RuntimeException.

    定义:在Eception 中有一个特殊的子类异常: RuntimeException ,直译为运行时异常。

    特点:在函数类进行了抛出时,可以不用再函数上进行声明。
      在函数上进行了声明后,可以不用在调用处 进行处理(声明 或者 try)

  老师的解释:之所以不在函数上声明,是因为该类的异常不需要让调用者处理, 当该异常发生, 是希望程序停下来。
      因为出现了无法运算的情况,希望停止程序后,对代码进行修正。(避免隐藏异常)


  所以:当我们在自定义异常时, 如果该异常一旦发生,会造成程序不能继续运行,那么此时就应让 自定义类去继承 RuntimeException ,
      使得该类异常一旦发生就会让程序停下了。

七、finally关键字。

    功能:是为异常处理提供一个统一的出口,使得在控制流程转到程序其他部分以前,能对程序的状态做统一的管理。

    作用:通常在finally语句中可以进行资源的清楚工作,:
      如: 关闭打开的文件。 删除临时文件。 关闭数据库连接动作。

    注意:无论try语句是否检测到异常, finally语句中的代码都会执行, 而且是 一定会执行、一定会执行、一定会执行

     但是,还是有一种情况finally语句将不能执行:其前面有System.exit;  //系统推出,程序运行结束, jvm结束。

 

八:异常检测语句的三中格式:

    1、 try{} catch(){}   

    2、 try{} catch(){} finally{}

    3、 try{} finally{}

    注意:如果语句中没有catch 语句,就不能算异常已经被处理,如第三句的异常实际上没有被处理。(此时的异常要在方法处标示:抛出)

九、异常在子类和父类之间的覆盖体现:

    1、当子类在覆盖父类时,如果父类中的方法抛出了异常,那么子类中的覆盖方法只能抛出该类异常, 或者是其子类异常, 或者不抛出异常。
    2、如果父类方法抛出了多个异常,那么子类方法在覆盖父类方法的时候就只能抛出父类异常的子集。
    3、如果父类或者接口方法在定义时没有异常抛出,那么子类方法在覆盖时也不能有异常抛出。

  总结: 就是说子类方法中不能抛出比父类异常范围更大的异常,

      如果确实在子类方法中产生了超出父类方法异常范围的异常,就必须在子类中
                                        进行try{} catch(){}处理。

  原因:如果子类方法中抛出了父类方法没有抛出的异常,当父类引用指向子类对象的时候,给父类方法准备的异常处理语句无法处理子类所抛出的异常。

 

 

十、总结:

    异常(Exception):
              |----编译时被检测异常:
              |----编译时不被检测异常(RuntimeException及其子类)


    Java中除了一些最基本的语法规则, 在实际开发的时候,尽量要培养自己的面向对象的思想,这个很重要, 把对象当成人一样的去思考。还要当成一个
  礼貌的、思考周到的人去思考。对象之间的调用等一切动作都是人与人之间的打交道。

相关文章:

  • 2019-05-31
  • 2020-05-25
  • 2020-04-26
  • 2018-07-14
  • 2018-11-01
  • 2018-09-06
  • 2020-07-17
  • 2019-06-01
猜你喜欢
  • 2020-04-26
  • 2018-05-26
  • 2019-12-02
  • 2019-01-09
  • 2018-03-24
  • 2021-02-08
  • 2018-12-11
  • 2019-05-31
相关资源
相似解决方案