Java软件开发常出现哪些异常?要怎么处理?

简介:   异常处理是Java软件开发中的一个重要部分,它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等,Java提供了几个异常处理特性,以try,catch和finally关键字的形式内建于语言自身之中,Java编程语言也允许你创建新的异常,并通过使用throw和throws关键字抛出它们,事实上,在Java编程中,Java的异常处理不单单是知道语法这么简单,它必须遵循标准的JDK库,和几个处理错误和异常的开源代码,这里我们将讨论一些关于异常处理的Java最佳实践。

  异常处理是Java软件开发中的一个重要部分,它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等,Java提供了几个异常处理特性,以try,catch和finally关键字的形式内建于语言自身之中,Java编程语言也允许你创建新的异常,并通过使用throw和throws关键字抛出它们,事实上,在Java编程中,Java的异常处理不单单是知道语法这么简单,它必须遵循标准的JDK库,和几个处理错误和异常的开源代码,这里我们将讨论一些关于异常处理的Java最佳实践。

Java软件开发常出现哪些异常?要怎么处理?.jpg

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

  选择检查型还是非检查型异常,对于Java编程人员来说,总是让人感到困惑。检查型异常保证你对错误条件提供异常处理代码,这是一种从语言到强制你编写健壮的代码的一种方式,但同时会引入大量杂乱的代码并导致其不可读。当然,如果你有替代品和恢复策略的话,捕捉异常并做些什么看起来似乎也在理,在Java编程中选择检查型异常还是运行时异常。

  在finally程序块中关闭或者释放资源

  这在Java编程中,是一个广为人知的最佳实践,在处理网络和IO类的时候,相当于一个标准。在finally块中关闭资源,在正常和异常执行的情况下,保证之前和稀缺资源的合理释放,这由finally块保证。从Java7开始,该语言有了一项更有趣的功能:资源管理自动化或者ARM块能实现这一功能。尽管如此,我们仍然要记住在finally块中关闭资源,这是对于释放像FileDescriptors这类,应用在socket和文件编程的情况下的有限资源很重要的。

  使用标准异常

  我们的第九条最佳实践建议使用标准和内置的Java异常。使用标准异常而不是每次创建我们自己的异常,对于维护性和一致性,不管是现在还是以后,都是最好的选择。重用标准异常使代码更具可读性,因为大部分Java开发人员对标准的像源自于JDK的RuntimeException异常,IllegalStateException异常,IllegalArgumentException异常或者NullPointerException异常,(开发者)他们能一眼就知道每种异常的目的,而不是在代码里查找或者在文档里查找用户定义的异常的目的。

  记录任何方法抛出的异常

  Java编程语言提供了throw和throws关键字来抛出异常,在javadoc中用@throw记录任何方法可能会抛出的异常。如果你编写API或者公共接口,这就变得非常重要。任何方法抛出的异常都有相应的文档记录,这样你就能下意识的提醒任何使用(该方法)的人。

  这些就是所有在Java编程中在处理异常的时候需要遵循的最佳实践,让我们知道了什么是在Java编程中编写异常处理代码时需要遵循的实践。

相关文章
|
30天前
|
Java 开发者 UED
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
40 3
|
10天前
|
Java 编译器 数据库连接
Java——异常
在 Java 中,程序执行过程中的不正常行为被称为异常。异常分为 Error 和 Exception。Error 表示系统级错误,而 Exception 则封装程序可能出现的问题。异常包括编译时异常和运行时异常(如数组越界)。异常可用于查找 bug 信息和作为方法内部的特殊返回值。处理异常的方式有默认处理和捕获异常,后者通过 try-catch 结构实现。此外,还可以自定义异常类来更灵活地处理特定情况。
25 9
Java——异常
|
13天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
1天前
|
IDE Java 开发工具
java自定义异常20
java自定义异常20
|
1天前
|
IDE Java 开发工具
java捕获异常19
java捕获异常19
|
30天前
|
Java 数据库连接 程序员
Java 认识异常
Java 认识异常
13 1
|
24天前
|
Java C++
Java内存区域于内存溢出异常
这篇文章详细解释了Java虚拟机的内存区域划分、各区域的作用以及可能遇到的内存溢出异常情况。
31 0
|
2天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
|
13天前
|
存储 缓存 安全
【Java面试题汇总】多线程、JUC、锁篇(2023版)
线程和进程的区别、CAS的ABA问题、AQS、哪些地方使用了CAS、怎么保证线程安全、线程同步方式、synchronized的用法及原理、Lock、volatile、线程的六个状态、ThreadLocal、线程通信方式、创建方式、两种创建线程池的方法、线程池设置合适的线程数、线程安全的集合?ConcurrentHashMap、JUC
【Java面试题汇总】多线程、JUC、锁篇(2023版)
|
7天前
|
缓存 Java 应用服务中间件
Java虚拟线程探究与性能解析
本文主要介绍了阿里云在Java-虚拟-线程任务中的新进展和技术细节。