zoukankan      html  css  js  c++  java
  • 异常

     1.什么是Java异常 程序在运行时,发生了不可预测的事件,它阻止了程序按照我们程序员的预期正常执行!
     
     2.什么是异常处理机制呢? 能让程序在异常发生时,按照代码预先设定的异常处理逻辑,针对性地处理异常,    让程序恢复正常并继续执行。
     
    3.所有异常和错误的父类--ThrowableThrowable类是Java异常类型的顶层父类,一个对象只有是Throwable类的(直接或者间接)
       实例,他才是一个异常对象,才能被异常处理机制识别。JDK中内建了一些常用的异常类,我们也可以自定义异常。根据编译器对异常的处理要求,
      01.异常分为两类: 运行时异常(RuntimeException):在程序运行期间产生的异常!
        02.受查异常 (checked  Exception):在程序编译期间产生的异常!    
     
    异常大览 异常的使用异常处理方式分为两种:(5个关键字) 
    1.使用try  catch  finally 
    2. 使用throw   抛出异常和throws声明异常try 
      01.try块中放可能发生异常的代码
      02.try不能单独使用,必须和catch或者finally中的其中一个联合使用
      03.如果执行完try并且不发生异常,则接着去执行finally代码块和finally后面的代码如果没有finally代码块,则直接执行catch之后的代码
      04.如果发生异常,则尝试去匹配对应异常的catch代码块。
    2.Catch
      01.每一个catch块用于捕获并处理一个特定的异常,或者这异常类型的子类。
      02.catch后面的括号定义了异常类型和异常参数。
      03.如果异常与之匹配且是最先匹配到的,则虚拟机将使用这个catch块来处理异常。
      04.可以书写多个catch代码块!顺序必须是按照异常类型从小到大!
      05.在catch块中可以使用异常参数来获取异常的相关信息。异常参数是这个catch块中的局部变量,其它块不能访问。
      06.如果当前try块中发生的异常在后续的所有catch中都没捕获到,则先去执行finally
      07.如果try中没有发生异常,则所有的catch块将被忽略。
      08.Java中可以将多个异常声明在一个catch中  
    3.Finally
      01.无论异常是否发生,finally代码块都会执行; 
      02.如果try代码块中出现return,先执行finally代码块之后return; 
      03.遇到System.exit(int status),不会执行finally代码块 System.exit(0):正常退出System.exit(1或者非0):非正常退出,一般放置在catch代码块中 
      04.主要执行一些清理工作,比如关闭流,释放数据库连接资源......
    注意事项
      01.每个代码块中的变量都是局部变量,其他代码块不能访问; 
      02.try不能单独使用,必须和catch或者finally联合使用
      03.catch代码块可以有多个,书写顺序必须是按照异常类型的继承关系从小到大书写 
      04.如果try代码块中出现了return,也是先执行finally之后再执行return 
     
    4.throw和throws的使用异常抛出的分类
       01.系统自动抛出异常     我们没有使用异常处理机制,系统默认遇到异常时,抛出的异常! 
       02.书写语句抛出异常     使用throw抛出异常,throws声明异常      Throwthrow就是抛出一个异常,并获取这个异常的引用,这个异常会被抛到外部的环境,由外部环境进行处理 
      语法:   throw  new  异常类型([异常提示语句]); 
      注意点:
      01.异常类型可以是Exception或者其子类; 
      02.一条throw语句只能抛出一个异常; 
      03.throw语句只能出现在方法体中 
      04.针对于thorw抛出的异常,有两种解决方式     
        001.使用try...catch...finally代码块处理异常     
        002.使用throws声明异常,把异常告诉调用者 Throws那我们就不得不说一下throws,其实throws并不是抛出一个实际的Exception而是一个异常声明,它声明这个方法可能会抛出一个异常,注意是可能,所以在没有异常的情况下也是可以用throws的,而throws本身的作用也是用来提高程序的健壮性,反过来,如果这个方法的的确确的有一个异常,那么编译器会强制让你加上throws这个异常声明。通常throws是写在参数列表的后面,这样就表明这个方法有可能会抛出一个异常  
     
    语法:         方法名称 throws  异常类型1,异常类型2; 
    注意点:
      01.thows声明在方法名称之后; 
      02.throws可以声明多个异常类型,每个类型之间使用'逗号'隔开; 
      03.throws声明表示当前方法可以不处理异常,而是由方法的调用者处理; 
      04.如果在主函数中使用throws声明异常,则由JVM处理异常! 
    throw与throws的比较
    1、throws出现在方法函数头;而throw出现在函数体。
    2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
    3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。什么是异常链?异常链是指将捕获的异常包装进一个新的异常中,新异常中记录了原始异常的信息。并重新抛出的异常处理方式。 自定义异常1.异常类必须是Throwable的子类 2.定义受查异常,建议继承Exception 3.定义运行异常,建议继承RuntimeException
  • 相关阅读:
    20071020ー胡小蝶
    20071018feeling
    20071020——今日起倒计时——我们的约定
    XPath对象选择器
    DIV与SPAN之间有什么区别
    SQL注入(一)
    Java平台AOP技术研究
    AOP技术基础
    AOP——引言
    .Net平台AOP技术研究
  • 原文地址:https://www.cnblogs.com/wang2386033566/p/9256804.html
Copyright © 2011-2022 走看看