Java中的异常处理

异常处理

一、异常的概念

   **异常(Exception)**又称为例外,差错,违例等,是特殊的运行错误对象,对应着Java语言特定的运行错误处理机制。由于Java是在网络 环境中运行的,所以安全问题成为首先考虑的重要因素之一。
1.Java中的异常
         捕获错误的最好时期是在编译期,最好在试图运行程序前。然而并非所有的错误都可以在编译期内被发现。有些问题必须在运行时被解决,例外是在程序运行过程中发生的异常事件,比如除0溢出,数组越界,找不到文件等,这些问题的出现将阻止程序的正常运行,为了增强代码的健壮性,程序设计时,必须考虑到可能发生的异常事件并做出相应的反应。
         在一个方法的运行过程中,如果发生了异常,则这个方法生产代表该异常的一个对象,并把它交给运行时系统,运行时找到相应的代码来处理这一异常。
         **抛出(throw)异常**:生成异常对象并把它提交给运行系统时的过程。
         **捕获(catch)异常**:运行时系统在方法调用栈中查找,从生成异常的方法开始回溯,直到找到包含相应异常处理的方法为止。
2.异常类
  Java中定义了很多异常类,每种异常类代表了一种运行错误。throwable类是所有异常类的父类。它派生了两个子类:*Error类* 和 *Exception类*。
  Error:JVM系统内部错误,资源耗尽等严重情况,由系统保留
  Exception:其它编程错误或偶然的外在因素导致的一般性问题,如对负数开平方根,除0,数组越界,空指针访问,文件不存在,网络连接中断等。
 我们 一般所说的异常类都是指Exception类。
 Exception类从父类throwable类那里还继承了若干方法,常用的方法有:
 **public void printStackTrace()**:该方法没有返回值,完成一个打印操作,在当前的标准输出上打印输出当前异常对象调用堆栈的先后轨迹,即程序先后调用并执行了哪些对象或类的哪些方法,使得运行过程中产生了这个异常对象。
3.系统定义的异常

JDK中已经定义了若干Exception的子类。分为RuntimeExcepton和非RuntimeExcepton两大类。

4.用户自定义的异常

用户自定义的异常是Exception派生出来的子类。

抛出和捕获异常

Java异常处理机制的步骤

  1. 抛出异常
  2. 捕获异常
  3. 如果Java运行时找不到捕获异常的方法,则运行时系统将终止,Java程序也将退出
    1.抛出异常
    Java程序在运行中遇到了可识别的错误,就会产生一个相对应的错误对象,这个对象会被提交给运行时系统,这个过程称为抛出异常。抛出异常的方法有两种:
  • 系统自动抛出异常
  • 语句抛出异常 。用户自定义的异常类无法依靠系统自动抛出异常。所以用throw语句来抛出异常。语法格式:
    throw 异常对象
    注意:
    该throw语句应放在一定的条件控制语句中,比如if语句
    如果含有该throw语句的方法或调用的其它类有异常抛出时,应该在方法的头定义中加上throw 对象名列表
    2.捕获异常
    当一个异常被抛出的时候,应该有专门的语句来接受这个异常对象,这个过程就是捕获异常。
    捕获异常的语句为
    try{
    语句块;(可能产生异常的语句块)
    }斜体样式
    catch(异常类名 异常对象){
    处理异常的语句块;
    ···
    }
    finally{
    异常处理语句块;
    ···
    }
    catch语句可以有好多个,但是至少有一个catch语句或finally语句
    3.finally语句
    无论代码在try语句中是否发生了异常,finally语句都会被执行。
    finally语句做一些清理资源的工作。
    注意:
    子类抛出的异常只能是父类异常的同类或子类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值