Java异常处理机制

简介: 异常概念与异常的层次结构;异常的抛出、捕获与处理

在程序运行的过程中发生的一些不正常事件就称为异常(如:数组下标越界、除0错、文件找不到等等)。

对于以上错误,过程式程序设计语言(如C)使用if语句进行条件判断。但这增加了程序的复杂度,而且程序设计人员也很难预先估计所有可能出现的错误情况,并对其进行处理。

一:Java中引入了异常类,Java程序在运行中,当发生一个可以识别的异常时,就产生该异常类对应的一个异常对象,系统中就会有相应的机制来处理该异常,确保它不会对系统本身产生影响。这种异常处理机制很好地提高了异常处理的效率。

二:错误也可分成两种:     1)编译错误     2)运行错误

而运行错误又可分成以下两种:     1)系统运行错误(Error)     2)逻辑运行错误(Exception)

以上两个异常类都是继承于Throwable类,下图展示了Java异常类的继承关系。

image.png

三:异常的捕获与处理:

   为了防止和处理异常,Java提供了语句try-catch-finally来捕获和处理异常,该语句的格式如下:

    try{   //可能产生异常的代码段 }

    catch(ExceptionType1 e){   //异常处理1  }

    [catch(ExceptionType2 e){   //异常处理2  }

      ……

    catch(ExceptionnTypeN e) {   //异常处理N  }]

    [finally{   //不管异常是否发生总要执行的代码  }]

四:

1. 使用throw抛出异常

        throw语句的格式如下:

            throw   ExceptionInstance;

2.使用throws抛出异常

       使用throws抛出异常的格式如下:

类型 方法名(类型 参数1,…) throws 异常类1,…,异常类n        {    //方法代码    }

      注意:一旦使用了throws语句声明抛出异常,就不用再使用try...catch来捕获异常了。


 

相关文章
|
3天前
|
Java
Java中的异常处理:深入理解try-catch块
【5月更文挑战第31天】本文将深入探讨Java中的异常处理机制,特别是try-catch块的使用。我们将通过实例来理解异常处理的重要性,以及如何有效地使用try-catch块来处理可能出现的错误和异常。
|
3天前
|
Java
Java中的异常处理:理解并有效利用
【5月更文挑战第31天】本文将深入探讨Java的异常处理机制,包括异常的类型、如何捕获和处理异常,以及如何使用自定义异常。我们将通过实际的代码示例来展示这些概念的应用,以帮助你更好地理解和使用Java的异常处理。
|
3天前
|
存储 安全 Java
深入理解Java并发编程:线程安全与锁机制
【5月更文挑战第31天】在Java并发编程中,线程安全和锁机制是两个核心概念。本文将深入探讨这两个概念,包括它们的定义、实现方式以及在实际开发中的应用。通过对线程安全和锁机制的深入理解,可以帮助我们更好地解决并发编程中的问题,提高程序的性能和稳定性。
|
2天前
|
存储 Java 开发者
探索Java中的异常处理:从基础到高级
【6月更文挑战第1天】本文将深入探讨Java中的异常处理机制,从基本概念到高级应用。我们将通过实例和代码示例,详细解释如何捕获和处理异常,以及如何使用自定义异常来提高代码的健壮性和可读性。无论你是Java初学者还是有经验的开发者,这篇文章都将为你提供有价值的知识和技巧。
10 4
|
2天前
|
存储 安全 Java
深入理解Java堆栈:机制、特性与应用
深入理解Java堆栈:机制、特性与应用
6 1
|
3天前
|
Java 关系型数据库 MySQL
【Java——SPI机制详解】
SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使用,比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现。Java中SPI机制主要思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,其核心思想就是 解耦。 当服务的提供者提供了一种接口的实现之后,需要在classpath下的META-INF/services/目录里创建一个以服务接口命名的
|
3天前
|
缓存 安全 Java
【Java——反射机制详解】
RTTI(Run-Time Type Identification)运行时类型识别。在《Thinking in Java》一书第十四章中有提到,其作用是在运行时识别一个对象的类型和类的信息。主要有两种方式:一种是“传统的”RTTI,它假定我们在编译时已经知道了所有的类型;另一种是“反射”机制,它允许我们在运行时发现和使用类的信息。 反射就是把java类中的各种成分映射成一个个的Java对象 例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。
|
3天前
|
Java 编译器 程序员
【Java ——异常机制详解】
try – 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。 catch – 用于捕获异常。catch用来捕获try语句块中发生的异常。 finally – finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。 throw – 用于抛出异常。
|
3天前
|
Java 编译器 测试技术
【Java 基础 - 注解机制详细解释】
不能使用关键字extends来继承某个@interface,但注解在编译后,编译器会自动继承java.lang.annotation.Annotation接口. 虽然反编译后发现注解继承了Annotation接口,请记住,即使Java的接口可以实现多继承,但定义注解时依然无法使用extends关键字继承@interface。 区别于注解的继承,被注解的子类继承父类注解可以用@Inherited: 如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解。
|
3天前
|
Java 程序员
Java中的异常处理:深入理解try-catch语句
【5月更文挑战第31天】本文将深入探讨Java中的异常处理机制,特别是try-catch语句的使用。我们将通过实例来理解如何在Java程序中有效地使用try-catch语句来捕获和处理异常。