zoukankan      html  css  js  c++  java
  • Java课05

    1.

      

      Java中的异常捕获语句

    Try{
                //可能发生运行错误的代码;
            }
            catch(异常类型     异常对象引用){
                //用于处理异常的代码
            }
            finally{
                //用于“善后” 的代码
            }

    2.

    3.

     运行结果:                         运行结果:

               

     4.

    运行结果

    总结: 当try语句进行多层嵌套时,会逐层先执行try语句的内容,当捕捉到错误时,会找到最近的catch并执行catch里面的语句,之后层的catch语句将不会执行。

           一旦catch到,finally语句会按顺序逐层执行。

    5.

    运行结果:

           总结:finally语句块不一定会执行。

         

        当try语句里直接有exception错误则执行完自动退出。相当于 System.exit(0),则不会执行后面的finally语句,更不会执行catch语句。

     6.

      异常的对象有两个来源,一是Java运行时环境自动抛出系统生成的异常,而不管你是否愿意捕获和处理,它总要被抛出!比如除数为0的异常。二是程序员自己抛出的异常,这个异常可以是程序员自己定义     的,也可以是Java语言中定义的,用throw 关键字抛出异常,这种异常常用来向调用者汇报异常的一些信息。

           异常是针对方法来说的,抛出、声明抛出、捕获和处理异常都是在方法中进行的。 

           Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行。

    使用try...catch捕获异常。

            执行try块里的业务逻辑代码时出现异常,系统自动生成一个异常对象,该异常对象被提交给Java运行时环境,这个过程被称为抛出(throw)异常。Java运行时环境收到异常对象时,会寻找能处理该异常对象的catch块,如果找到合适的catch块并把该异常对象交给catch块处理那这个过程被称为捕获(catch)异常;如果Java运行时环境找不到捕获异常的catch块,则运行时环境终止,Java程序也将退出。

     访问异常讯息

           如果程序需要在catch块中访问遗常对象的相关信息,可以通过调用catch后异常形参的方法来获得。当Java运行时决定调用某个catch块来处理该异常对象时,会将该异常对象赋给catch块后的异常参数,程序就可以通过该参数来获得该异常的相关信息。所有的异常对象都包含了如下几个常用方法:getMessage():返回该异常的详细描述字串。printStackTrace():将该异常的跟踪栈信息输出到标准错误信息输出。printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定输出流。getStackTrace():返回该异常的跟踪栈信息。

       异常处理

    try

    {

    需要检测的代码;

    }

    catch(异常类 变量)

    {

    异常处理代码;

    }

    finally

    {

    一定会执行的代码;

    }

         异常处理的嵌套

         异常处理流程代码可以放在任何能放可执行性代码的地方,因此完整的异常处理流程既可放在try块里,也可放在catch块里,也可放在finally块里。

         异常处理嵌套的深度没有明确的限制,但通常没有必要使用超过两层的嵌套异常处理,层次太深的嵌套异常处理没有太大必要,而且导致程序可读性降低。

    checked异常与Runtime异常:

          Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。所有RuntimeException类及其子类的实例被称为Runtime异常;不是RuntimeException类及其子类的异常实例则被称为Checked异常。

    Checked异常的处理:

         当前方法明确知道如何处理该异常,程序应该使用try...catch块来捕获该异常,然后在对应的catch块中修改该异常。当前方法不知道如何处理这种异常,应该在定义该方法时声明抛出该异常。 

    Runtime异常的处理:

         Runtime异常则更加灵活,Runtime异常无需显示声明抛出。如果程序捕捉Runtime异常,也可以使用try...catch块来捕捉Runtime异常。

    使用throws声明抛出异常:

          throws声明抛出异常的思路是:当前方法不知道应该如何这种类型的异常,该异常应该由上一级调用者处理,如果main方法也不知道应该如何处理这种类型的异常,也可以使用throws声明抛出异常,该异常交给JVM处理。JVM对异常的处理方法是:打印异常跟踪栈信息,并中止程序的运行,这就是程序在遇到异常后自动结束的原因。

          throws声明抛出只能在方法签名中使用,throws可以声明抛出多个异常类,多个异常类之间以逗号隔开。

          如果需要在程序中自行抛出异常,应使用throw语句,throw语句可以单独使用,throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。throw语句的语法格式如下:throw ExceptionInstance;

         如果throw语句抛出的异常是Checked异常,则该throw语句要么处于try块里,显示捕获该异常,要么放在一个带throws声明抛出的方法中,即把该异常交给方法的调用者处理。

      异常处理原则

        不要过度使用异常;

        不要使用过于庞大的try块;

        避免使用Catch AII 语句;

        不要忽略捕获到异常。

  • 相关阅读:
    Activity的生命周期和启动模式
    网络基础1
    Jersey用户指南学习笔记1
    IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服务
    Java并发编程实战笔记—— 并发编程4
    Java并发编程实战笔记—— 并发编程3
    Java并发编程实战笔记—— 并发编程2
    7.2.4
    7.2.4
    7.2.3
  • 原文地址:https://www.cnblogs.com/Aming-/p/11755468.html
Copyright © 2011-2022 走看看