Java 异常处理小结(1)

      做了一个几个星期的东西,又要重新再来了~~从需求分析重新做起,这时,我终于体会到了沟通的重要性啊~~

今天,现在都凌晨1点了,应该是昨天,昨天下午进行了一场笔试,选的Java,选择题加问答题~~感觉Java 全都是一些基础的根本的知识,只要基础扎实,笔试是不成问题的~~~·但是,姐的基础不扎实~~~~~~13个选择题,有6个判断程序结果的题,姐都不是很把握,但是,姐都答对了~直觉指引我啊~~~~~~姐决心好好学习!!!!一定要踏踏实实!!Yes!

 

     今天总结一下 Java的异常处理机制~~早该做的~~~~

 

一:Java 异常的类型

 

 Java 常见异常类的结构如下:

 java.lang.Object

 

  java.lang.Throwable
      java.lang.Exception
         java.lang.RuntimeException
      java.lang.Error
         java.lang.ThreadDeath
  Throwable 是Java语言中所有异常和错误的超类,只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。 Throwable 有两个直接子类,Error和Exception。
 1, Error :API文档说:“Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。”  意思应该是:Error表示 程序本身无法恢复的严重错误,如,内存越界,正常程序不应该试图捕获的严重错误,应该交给系统处理。应该谨慎使用Error的子类,因为它可能导致灾难性的错误。
 2, Exception  :API文档说:“Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。 ”  意思应该是:程序本身可以处理的异常。Exception 有一个子类:Runtime Exception。
       3, Runtime Exception: API文档说:” RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。“   Runtime  Exception 顾名思义:运行时异常。Java编译器也就是java虚拟机不会去检查它,即使程序可能出现这种异常,不去Try catch ,也不throws 在代码编译阶段,还是会通过,但是在代码运行阶段会出现错误反应。一些常见的异常错误,如NullPointException就是Runtime Exception 的直接子类。

 二:Java 的异常处理

 

  Java的“ 异 常” 处 理 通 过5个 关 键 词 来 实现:try,catch,throw,throws和finally。

 

    1,使用try ..catch

 

      我们希望自己可以处理异常,可以用try {}来指定一块可能出现异常的代码块。catch()来制定想要捕捉的异常类型。注意,try ,catch 均不可单独使用。可以组合使用。try 必须至少有一个与其匹配的 catch或finally。

         如果,同一段程序可能出现多个异常类型,则可以有多个catch语句,每一个catch 的异常类型都会被检查,第一个与异常匹配的catch语句就会被执行,其他的catch语句就不会再被执行。因此,如果,一个类和子类同时都catch的话,应将子类的catch放在前面,否则,永远不会到达子类。

 
   2,throw
        
        throw 用来明确的抛出一个异常,在方法体内。语法格式为 throw 异常对象。throw 后,传到catch语句。 throw 后面的语句将永不会被执行。
 
  3,throws
 
       throws 用来表明一个方法可能抛出的各种异常,在方法名后。语法格式为 throws 异常类型1,异常类型2 ····
      对于处理不了的异常或者需要转型的异常一般会throws。如果,在方法调用方法的多层嵌套中,每个方法都throws,java虚拟机会从出现异常的代码块中,一层一层的往外找,直到找到处理该异常的代码为止,然后将异常交给处理的catch语句。如果,Java虚拟机找到最外层的main()方法时,仍然没有异常处理的代码,将会,第一、调用异常的对象的printStackTrace()方法,打印方法调用栈的异常信息。第二、如果出现异常的线程为主线程,则整个程序运行终止;如果非主线程,则终止该线程,其他线程继续运行。
    
    4,finally

         如果一个异常被抛出时,程序的执行不再是线性的,可能会导致有些代码无法执行到。为了保证有些代码无论抛出什么异常都必须被执行的话,这一段代码可以用finally来标识。finally语句总是在return语句前执行,不论位置的先后。


   总的来说,异常越早处理越好,占用的资源的时间就会越小,如果自己可以处理的异常就可以处理掉,不要抛给调用者。
    
        



 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值