Java 异常处理机制

Java 异常处理机制:
Java 的异常处理机制可以让程序具有极好的容错性,让程序更加健壮。
当程 序运行出现意外情形时,系 统会自动生成一个 Exception 对象来通知程序,从而实现将“业务功能实
现代码”和“错误处理代码”分离, 提供更好的可读性。
一、 使用 try…catch 捕获异常 Java 异常处理机制为:抛出异常,捕捉异常,处理异常。 try…catch 语法格

如图所示
在这里插入图片描述
在使用 try…catch 捕获处理异常时需要注意:

  1. 不要过度使用异常,不能使用异常处理机制来代替正常的流程控制语句
  2. 异常捕获时,一定要先捕获小异常,再捕获大异常。否则小异常将无法被捕获
  3. 避免出现庞大的 try 块
  4. 避免使用 catch(Exception e){}
  5. 不要忽略异常(有问题就要及时解决)
    Exception 类的常用方法如图所示:
    在这里插入图片描述
    Java 异常体系(错误和异常)
    Java 把所有的非正常情况分成两种:异常(Exception)和错误(Error),它们都继承 Throwable 父 类。
    Error 错误,一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法 恢
    复或不可能捕获,将导致应用程序中断。通常应用程序无法处理这些错误,因此应用程 序不应该试图 使
    用 catch 块来捕获 Error 对象。在定义该方法时,也无须在其 throws 子句中声明该 方法可能抛出 Error
    及 其任何子类。
    如图所示:
    在这里插入图片描述
    三、 Java7 多异常捕获 从 Java7 开始,一个 catch 块可以捕获多种类型的异常。 在使用一个 catch 块
    捕获多种类型的异常时需要注意: 捕获多种类型的异常时,多种异常类型之间用竖线(|)隔开。 捕获多
    种类型的异常时,异常变量有隐式的 final 修饰,因此程序不能对异常变量重新赋值。
    四、 finally 块 finally 块一般用来关闭物理资源(数据库连接,网络连接,磁盘文件等),这些物理资 源
    必须显式关 闭。除非在 try 块、catch 块中调用了退出虚拟机的方法( System.exit(0); ),否则不管 在 try
    块、 catch 块中执行怎样的代码,出现怎样的情况,异常处理的 finally 块一定会被执行。
    五、 Checked 异常和 Runtime 异常 Java 的异常被分为两大类:Checked 异常和 Runtime 异常(运行 时
    异 常 )。 Runtime 异 常 : 所 有 的 RuntimeException 类 及 其 子 类 的 实 例 ; Checked 异 常 : 不 是
    RuntimeException 类及其子类的异常实例。 只有 Java 语言提供了 Checked 异常,其他语言都没有提供
    Checked 异常。Java 认为 Checked 异常都是可 以被处理(修复)的异常,所以 Java 程序必须显式处理
    Checked 异常。如果程序没有处理 Checked 异 常,该程序在编译时就会发生错误,无法通过编译。Checked
    异常体现了 Java 的设计哲学:没有完善错误处理的代码根本就不会被执行。
    六、 使用 throws 抛出异常 使用 throws 声明抛出异常的思路是,当前方法不知道如何处理这种类型的
    异常,该异常应该由上级调用 者处理;如果 main 方法也不知道如何处理这种类型的异常,也可以使用
    throws 声明抛出异常,该异常将 交给 JVM 处理。JVM 对异常的处理方法是,打印异常的跟踪栈信息,
    并中止程序运行。 throws 声明抛出异常的格式:
    throws 异常类 1,异常类 2,异常类 3,…
    七、 使用 throw 抛出异常 Java 也允许程序自行抛出异常,自行抛出异常使用 throw 语句来完成(注 意
    此处的 throw 没有后面的 s) 如果需要在程序中自行抛出异常,则应使用 throw 语句,throw 语句可 以
    单独使用,throw 语句抛出的不 是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。 throw
    语句的语法格式: throw 异常实例;
    八、自定义异常类用 户 自 定 义 异 常 都 应 该 继 承 Exception 基 类 ; 如 果 希 望 自 定 义 Runtime 异常,则应该 继 承
    RuntimeException 基类。定义异常类时通常需要提供两个构造器:一个是无参数的构造器;另一 个是带 个
    字符串参数的构造器,这个字符串将作为该异常对象的描述信息(也就是异常对象的 getMessage()方 法的
    返回值)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值