java中的异常处理,java异常的处理方法

本文目录一览:

北大青鸟java培训:异常处理的Java最佳方法?

异常处理是Java开发中的一个重要部分。

它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。

Java提供了几个异常处理特性,以try,catch和finally关键字的形式内建于语言自身之中。

Java编程语言也允许你创建新的异常,并通过使用throw和throws关键字抛出它们。

事实上,在Java编程中,Java的异常处理不单单是知道语法这么简单,它必须遵循标准的JDK库,和几个处理错误和异常的开源代码。

这里北大青鸟将讨论一些关于异常处理的Java最佳实践。

1、为可恢复的错误使用检查型异常,为编程错误使用非检查型错误。

选择检查型还是非检查型异常,对于Java编程人员来说,总是让人感到困惑。

检查型异常保证你对错误条件提供异常处理代码,这是一种从语言到强制你编写健壮的代码的一种方式,但同时会引入大量杂乱的代码并导致其不可读。

当然,如果你有替代品和恢复策略的话,捕捉异常并做些什么看起来似乎也在理。

在Java编程中选择检查型异常还是运行时异常。

2、在finally程序块中关闭或者释放资源这在Java编程中,是一个广为人知的最佳实践,在处理网络和IO类的时候,相当于一个标准。

在finally块中关闭资源,在正常和异常执行的情况下,保证之前和稀缺资源的合理释放,这由finally块保证。

从Java7开始,该语言有了一项更有趣的功能:资源管理自动化或者ARM块能实现这一功能。

尽管如此,我们仍然要记住在finally块中关闭资源,这是对于释放像FileDescriptors这类,应用在socket和文件编程的情况下的有限资源很重要的。

3、在堆栈跟踪中包含引起异常的原因很多时候,当一个由另一个异常导致的异常被抛出的时候,Java库和开放源代码会将一种异常包装成另一种异常。

日志记录和打印根异常就变得非常重要。

Java异常类提供了getCause方法来检索导致异常的原因,这些(原因)可以对异常的根层次的原因提供更多的信息。

该Java实践对在进行调试或排除故障大有帮助。

时刻记住,如果你将一个异常包装成另一种异常时,构造一个新异常要传递源异常。

4、始终提供关于异常的有意义的完整的信息异常信息是最重要的地方,因为这是程序员首先看到的第一个地方,这里你能找到问题产生的根本原因。

这里始终提供精确的真实的信息。

5、避免过度使用检查型异常检查型异常在强制执行方面有一定的优势,但同时它也破坏了代码,通过掩盖业务逻辑使代码可读性降低。

只要你不过度使用检查型异常,你可以最大限度的减少这类情况,这样做的结果是你会得到更清洁的代码。

你同样可以使用Java7的新功能,以移除重复项。

6、将检查型异常转为运行时异常这是在像Spring之类的多数框架中用来限制使用检查型异常的技术之一,大部分出自于JDBC的检查型异常,都被包装进DataAccessException中,而(DataAccessException)异常是一种非检查型异常。

这是Java最佳实践带来的好处,特定的异常限制到特定的模块,像SQLException放到DAO层,将意思明确的运行时异常抛到客户层。

7、记住对性能而言,异常代价高昂需要记住的一件事是异常代价高昂,同时让你的代码运行缓慢。

假如你有方法从ResultSet(结果集)中进行读取,这时常会抛出SQLException异常而不会移到下一元素,这将会比不抛出异常的正常代码执行的慢的多。

因此最大限度的减少不必要的异常捕捉和移动,那里没有什么固定的原因。

不要仅仅是抛出和捕捉异常,如果你能使用boolean变量去表示执行结果,可能会得到更整洁,更高性能的解决方案。

修正错误的根源,避免不必须要的异常捕捉。

java异常处理包含哪几个环节?

可以选择三种方法来进行异常处理1对代码块用try..catch进行异常捕获处理;

2在 该代码的方法体外用throws进行抛出声明,告知此方法的调用者这段代码可能会出现这些异常,你需要谨慎处理。此时有两种情况:

如果声明抛出的异常是非运行时异常,此方法的调用者必须显示地用try..catch块进行捕获或者继续向上层抛出异常。

如果声明抛出的异常是运行时异常,此方法的调用者可以选择地进行异常捕获处理。

3在代码块用throw手动抛出一个异常对象,此时也有两种情况,跟2)中的类似:

如果抛出的异常对象是非运行时异常,此方法的调用者必须显示地用try..catch块进行捕获或者继续向上层抛出异常。

如果抛出的异常对象是运行时异常,此方法的调用者可以选择地进行异常捕获处理。

(如果最终将异常抛给main方法,则相当于交给jvm自动处理,此时jvm会简单地打印异常信息)

常处理和设计的建议

1. 只在必要使用异常的地方才使用异常,不要用异常去控制程序的流程

2. 切忌使用空catch块

3. 检查异常和非检查异常的选择

4. 注意catch块的顺序

5. 不要将提供给用户看的信息放在异常信息里

6. 避免多次在日志信息中记录同一个异常

7. 异常处理尽量放在高层进行

8. 在finally中释放资源

JAVA语言如何进行异常处理?

Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。

在Java中,每个异常都是一个对象,它是Throwable类或其子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理。

Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果系统会抛出(throw)一个异常对象,可以通过它的类型来捕获(catch)它,或通过总是执行代码块(finally)来处理;try用来指定一块预防所有异常的程序;

catch子句紧跟在try块后面,用来指定你想要捕获的异常的类型;

throw语句用来明确地抛出一个异常;

throws用来声明一个方法可能抛出的各种异常(当然声明异常时允许无病呻吟);

finally为确保一段代码不管发生什么异常状况都要被执行。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程

原创文章,作者:GPQJS,如若转载,请注明出处:https://www.506064.com/n/316545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
GPQJSGPQJS
上一篇 2025-01-09 12:14
下一篇 2025-01-09 12:14

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29

发表回复

登录后才能评论