Java异常处理机制try...catch捕获异常、Java异常体系

Java的异常处理机制可以让程序具有极好的容错性,让程序更加健壮。当程序运行出现意外情形时,系统会自动生成一个 Exception 对象来通知程序,从而实现将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性
使用异常的作用:
(1)、解决问题并再次调用造成异常的方法。
(2)、平息事态的发展,并在不重新尝试方法的前提下继续。
(3)、计算另一些结果,而不是希望方法产生的结果。
(4)、在当前环境中尽可能解决问题,以及将相同的异常重新抛出到一个更加高级的环境。
(5)、在当前环境中尽可能解决问题,以及将不同的异常重新抛出到一个更加高级的环境。
(6)、终止程序执行。
(7)、简化编码。若异常方案使事情变得更加复杂,那就会令人非常烦恼,不如不用。
(8)、使自己的库和程序变得更加安全。这既是一种“短期投资”(便于调试),也是一项“长期投资”(改善应用程序的健壮性)。
一、Java异常的分类
Java异常类最顶层的基类是Throwable,它有两个子类,分别是Error和Exception,前者表示程序无法处理的错误(error),后者就是我们所说的异常。错误(error)是指那些程序之外的条件状态使得程序无法恢复的不正常事件,比如假设一个应用能够打开一个文件,但是由于硬件或者系统故障导致程序不能读取这个文件中的内容。这个失败的“读操作”将会出现一个“java.io.IOError”异常,错误(error)是不能被捕捉或者抛出的,它本身就是一种错误(废话)。而异常又分为两种,分别是非运行时异常和运行时异常(RuntimeException)。非运行时异常表示RuntimeException之外的异常(废话),在程序中必须进行异常处理(捕获异常或者抛出)。如果不处理,程序就不能编译通过。对于运行时异常,通俗的解释是程序在执行的时候才发现的异常,这编译的时候往往无法发现这类异常,它们一般是由程序逻辑错误引起的,Java编译器不强制要求我们一定要处理这类异常,但是我们应该从逻辑的角度上尽量避免这类异常的发生。NullPointerException和IndexOutOfBoundsException都是运行时异常。为什么编译器不强制我们进行异常处理呢?因为我们的程序运行起来的时候可能出现各种异常,比如空指针异常、数组越界异常,它们是不确定的,是我们“意料之外”出现的,在程序中指定这些非确定的异常是不合理的
二、使用try…catch
Java异常处理机制为:抛出异常,捕捉异常,处理异常

try {     
    //业务功能代码 
} catch(异常类1 e1) {     
    //异常处理代码1
} catch(异常类2 e2) {     
    //异常处理代码1 
}
... catch(异常类n en) {     
    //异常处理代码n 
}

在使用try…catch捕获处理异常时需要注意:
(1)不要过度使用异常,不能使用异常处理机制来代替正常的流程控制语句
(2)异常捕获时,一定要先捕获小异常,再捕获大异常。否则小异常将无法被捕获
(3)避免出现庞大的try块
(4)避免使用catch(Exception e){}
(5)不要忽略异常
Exception类的常用方法 在这里插入图片描述
三、Java异常体系(错误和异常)
Java把所有的非正常情况分成两种:异常(Exception)和错误(Error),它们都继承Throwable父类
1、Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。 程序中应当尽可能去处理这些异常
2、Error错误,一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败 等,这种错误无法恢复或不可能捕获,将导致应用程序中断。通常应用程序无法处理 这些错误,因此应用程序不应该试图使用catch块来捕获Error对象。在定义该方法 时,也无须在其throws子句中声明该方法可能抛出Error及其任何子类
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,异常是一种特殊的对象,表示在程序运行期间发生的不正常情况。异常体系是由Java语言提供的一组类和接口,用于描述异常处理异常Java中的异常体系由两个主要部分组成: 1. 异常类:Java中的异常类都是 `Throwable` 类的子类,其中包括两种常见的子类:`Error` 和 `Exception`。 - `Error` 类表示严重的错误,通常是指与虚拟机相关的问题,例如内存溢出或栈溢出。通常情况下,我们不会处理 `Error` 类型的异常。 - `Exception` 类表示一般性异常,它可以被捕获处理。 `Exception` 类有两个常见的子类:`RuntimeException` 和 `IOException`。`RuntimeException` 类表示运行时异常,通常是由程序逻辑错误引起的;`IOException` 类表示输入/输出异常,通常是由文件读写或网络通信引起的。 2. 异常处理机制Java提供了两种方法来处理异常: - `try-catch` 语句:使用 `try-catch` 语句捕获异常的过程称为异常捕获。在 `try` 块中的代码可能会抛出异常,因此我们可以在 `try` 块后面跟着一个或多个 `catch` 块来处 ### 回答2: Java中的异常体系是指用来处理程序中出现的错误和异常情况的一套机制异常是在程序执行过程中可能发生的非正常情况,如除零错误、空指针引用等。Java异常处理机制分为3种类型:可检查异常、运行时异常和错误。 可检查异常(checked exception)是指在程序编译时就必须处理异常。如果一个方法可能会抛出可检查异常,要么在方法的声明中使用throws关键字声明该异常,要么使用try-catch捕获处理异常。可检查异常的目的是提醒开发者对可能的异常情况进行处理,确保程序的健壮性。 运行时异常(runtime exception)是指不需要在编译阶段处理异常。这些异常通常由程序错误导致,如数组越界、空指针引用等。运行时异常不需要强制处理,但可以选择使用try-catch处理。同时,运行时异常也可以使用throws关键字声明,将异常抛给调用者。 错误(error)是指严重的错误,通常是虚拟机无法恢复的问题。错误无法通过捕获处理来解决,常见的错误类型有OutOfMemoryError和StackOverflowError等。一旦错误发生,程序的执行将中断。 Java异常体系中,所有的异常都继承自Throwable类。Throwable类有两个最重要的子类:Exception和Error。Exception类表示可检查异常,而Error类表示错误。此外,还有RuntimeException类,它是Exception的子类,用于表示运行时异常。 通过使用Java异常体系,开发者能够在程序中处理和恢复各种异常情况,提高程序的可靠性和稳定性。在编写Java程序时,合理地处理异常是十分重要的一项技能。 ### 回答3: Java异常体系Java编程语言中用于处理程序运行错误的一种机制。在Java中,异常分为可检查异常和不可检查异常两种。 可检查异常(Checked Exception)是指需要在代码中显式处理异常,这些异常一般表示程序处理外部资源时可能出现的错误情况,如文件读写错误、网络连接错误等。可检查异常需要使用try-catch语句来捕获处理,或者使用throws关键字声明在方法的声明中,让调用者处理。可检查异常的父类是Exception。 不可检查异常(Unchecked Exception)也称为运行时异常(Runtime Exception),是指在代码中不需要显式处理异常。不可检查异常一般表示程序出现了严重的错误,如除零错误、空指针异常等。不可检查异常可以选择性地使用try-catch语句捕获处理,但不是强制要求。不可检查异常的父类是RuntimeException。 Java异常体系是通过抛出和捕获异常来实现的。当程序出现异常时,会抛出一个异常对象,该对象会沿着方法调用栈被传递到调用栈的上层,直到被捕获并进行处理异常对象包含异常的类型和相关的信息,如异常的原因和调用栈等。捕获异常通常使用try-catch语句块来实现,try块中包含可能抛出异常的代码,catch块则用于捕获处理异常Java异常体系还支持自定义异常,可以根据程序的需要创建自己的异常类。自定义异常类一般继承自Exception或RuntimeException。通过自定义异常,可以更好地表示程序中的特定错误,并提供更加详细的错误信息。 总之,Java异常体系是一种用于处理程序运行错误的机制,通过抛出和捕获异常来实现。通过可检查异常和不可检查异常,可以针对不同的错误情况进行适当的处理。同时,Java还支持自定义异常,可以提供更加详细和准确的错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值