异常处理(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语句中的代码都会执行, 而且是 一定会执行、一定会执行、一定会执行

八、总结:

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

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

时间: 2024-12-18 06:38:01

异常处理(throw,throws,try,catch,finally)的相关文章

浅谈Java throw, throws, try catch异常处理

1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开.当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象.如下面例子所示: public class Shoot {   创建类 static void pop() throws NegativeArraySizeException { //定义方法并抛出NegativeArraySizeException异常 int [] arr = new int[-3];//创建数组 } public

Java基础(一)异常处理关键字:try catch finally throw throws

嗨咯,大家晚上好,我的博客首篇开始了 ,我们一起加油吧! 都说java 语言是非常健壮性 如:垃圾回收机制.内存模型.异常处理,强类型转换.跨平台,等等,使得Java语言的受到青睐.今天我们先来聊聊java的异常处理机制try catch finally throw throws,平时我们貌似小瞧了这五个关键字.开发应用系统,良好异常的处理对系统后期的开发.维护.升级.用户的体验尤其重要. 异常有个非常重要的特征,从出现异常的位置 到 最顶端的main方法 如果你一直没catch到它,最终jvm

【又长见识了】C#异常处理,try、catch、finally、throw

异常处理:程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常.处理这种错误,就叫做异常处理. 1.轻描淡写Try.Catch.Finally.throw用法 在异常处理中,首先需要对可能发生异常的语句进行异常捕捉,try就是用于预测可能出现的异常.捕获异常并对异常进行处理,就在catch中实现.不管异常发生与否,都会执行finally里面的语句.先看一个例子: static void Main(string[] args) { Console.WriteLine("请输入除数:&qu

T-SQL编程中的异常处理-异常捕获(try catch)与抛出异常(throw)

原文:T-SQL编程中的异常处理-异常捕获(try catch)与抛出异常(throw) 本文出处: http://www.cnblogs.com/wy123/p/6743515.html T-SQL编程与应用程序一样,都有异常处理机制,比如异常的捕获与异常的抛出(try catch throw),本文简单介绍异常捕获与异常抛出在T-SQL编程中的实际使用 . 异常处理简单说明 异常捕获在应用程序编程中非常常见,提供了处理程序运行时出现的任何意外或异常情况的方法刚毕业的时候对于异常处理迷茫不解,

Java异常处理机制:try...catch...的执行流程

Java异常处理机制:try...catch...的执行流程 在项目中遇到try...catch...语句,因为对Java异常处理机制的流程不是很清楚,导致对相关逻辑代码不理解.所以现在来总结Java异常处理机制的处理流程: 1.异常处理的机制如下: 在方法中用 try... catch... 语句捕获并处理异常,catch 语句可以有多个,用来匹配多个不同类型的异常. 对于处理不了的异常或者要转型的异常,在方法的声明处通过 throws 声明异常,通过throw语句拋出异常,即由上层的调用方法

try-catch和throw,throws的区别 (转)

// 最近又在捡起来JAVA,一些文档转载留给自己好好看看,出处不是很确定~ 希望自己能更努力 ~ java里的异常多种多样,这是一种非常有用的机制,它能帮助我们处理那些我们未知的错误,在java里,关于异常的有throw throws,还有一个try catch 程序块.接下来我们挨个看看这几个的作用. 1.throw throw 就是抛出一个异常,并获取这个异常的引用,这个异常会被抛到外部的环境,由外部环境进行处理 class A{ public void func() throws Exc

C++异常处理解析: 异常的引发(throw), 捕获(try catch)、异常安全

前言: C++的异常处理机制是用于将运行时错误检测和错误处理功能分离的一 种机制(符合高内聚低耦合的软件工程设计要求),  这里主要总结一下C++异常处理的基础知识, 包括基本的如何引发异常(使用throw)和捕获异常(try catch)相关使用注意点, 以及C++标准库提供的一套标准异常类和这些异常类的继承层级结构以及相关使用方法和常用习惯. C++异常的引发(throw): 引发C++异常的语法就是使用throw语句: throw object; 注意这里throw抛出的是一个对象,也就是

Java 错误结果Throw/Throws

目录 java处理异常方式    throw的作用    throws的作用    方法原理    举例    总结 个人实例 1.java处理异常方式 在java代码中如果发生异常的话,jvm会抛出异常对象,导致程序代码中断,这个时候jvm在做的操作就是:创建异常对象,然后抛出,比如: int i= 1: int j = 0: int res = 0: res = i/j://除0错误 System.out.println(res); 这5句代码运行到第四句会中断,因为jvm抛出了异常 2.t

java throw throws

转载:http://www.cnblogs.com/xiohao/p/3547443.html 当然,你需要明白异常在Java中式以一个对象来看待.并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行.直接进入正题哈:1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常. 1.1   throw是语句抛出一个异常.语法:th