A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

异常小结  

异常:就是程序在运行时出现不正常情况。
  异常由来:问题也是现实生活中一个具体事务,也可以通过java
  的类的形式进行描述,并封装成对象。其实就是Java对不正常情
  况进行描述后的对象体现。
   对于问题的划分:两种,一种是严重的问题,一种是非严重问题
<1> java通过Error类进行描述.
    对于Error一般不编写针对性的代码对其进行处理。
<2>对于非严重的,java通过Exception类进行描述
   对于Exception可以使用针对性的处理方式进行处理。
无论Errror或者Exception都具有一些共性内容。
   比如:不正常情况的信息,引发原因等。
  Throwable  :Error  Exception
异常处理
   Java提供了特有的语句进行处理。
  try {需要被检测的代码;}
  catch(异常类 变量){处理异常的代码(处理方式);}
  finally{一定会执行的语句}
对捕获到的异常对象进行常见方法操作。
   String getMessage();获取异常信息。
   <1> s.o.p(e.getMessage());
   <2> s.o.p(e.toString());
   <3> e.printStackTrace();
在函数上声明异常:便于提高安全性,让调用者进行处理,不处理则编译失败。
对多异常的处理。
 <1> 声明异常时,建议声明更为具体的异常,这样处理的可以更具体。
 <2> 对方声明有几个异常,就对于有几个catch块。不要定义多余的catch块
 如果多个catch块中的异常出现继承关系,父类catch块放在最下面
 建议:在进行catch处理时,catch中一定要定义具体处理方式。
 不要简单的定义一句e.printStackTrace();也不要简单的就写一条输出语句。
因为项目中会出现特有的问题,而这些问题并未被java所描述,所以对这些特有的问题可以按照java对问题封装的思想,将特有的问题,进行自定义的异常封装。
  自定义异常:
  <1>:需求在本程序中,对于除数是负数,也是为是错误的是无法进行运算的,那么就需要对这个问题进行自定义描述。
  当在函数内部出现了throw抛出异常对象,那么就必须要给出对应的处理动作。
   要么在内部try catch处理
   要么在函数上生命让调用者处理。
  一般情况下,函数内出现异常,函数上要声明。
  <2>发现打印的结果中 只有异常的名称,却没有异常的信息,因为自定义的异常并未定义所属信息。
    如何定义异常信息呢?:
   因为父类中已经把异常信息的操作都完成了,所以子类只要在构造时,将异常信息传递给父类 通过super语句。那么就可以直接通过getMessage方法获取自定义的异常信息了。
  <3>自定义异常:必须是自定义类继承Exception。
  继承Exception的原因:
   异常体系有一个特点:因为异常类和异常对象都被抛出,它们都具备可抛性。这个可抛性是Throwable这个体系中的独有特点。
  只有这个体系中的类和对象才可以被throw和throws操作。
  <4> throw 和throws的区别:
     throws 使用在函数上 ;throw 使用在函数内 ;
     throws 后面跟的是异常类,可以跟多个, 用“,”隔开。
     throw后跟的是异常对象。
  <5> Exception中有一个特殊的子类异常RuntimeException 运行时异常。  如果在函数内抛出该异常,函数上可以不用声明,编译一样通过。  如果再函数上声明了该异常,调用者可以

不用进行处理,编译一样通过。
  之所以不用在函数上声明,是因为不需要让调用者处理。当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。
  <6> 自定义异常时:如果该异常的发生,无法再继续进行运算。那么就让自定义异常继承RuntimeException。
  <7> 对于异常 分两种:
    编译时被检测的异常。
    编译时不被检测的异常(运行时的异常。RuntimeException以及其子类)

1 个回复

倒序浏览
学习了,不过讲的不是太系统,有待{:soso_e130:}提高
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马