移动学习网 导航

异常处理的Java最佳方法?

2024-06-01m.verywind.com
~

异常处理是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中异常处理语句有哪些?
  • 答:JAVA使用try-catch语句来处理异常。将有可能出现的异常操作放在try-catch的try部分,一旦try部分抛出异常对象,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try立即结束执行,转向catch部分。所以程序将发生异常后的处理放在catah部分。

  • JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代...
  • 答://这里处理异常 } finally { //这里的语句必然会得到执行,不管异常发省与否,//用于关闭数据库,关闭连接等收尾操作(非必要)} java异常的一个简单例子,比如我有一个除法方法 public int divide(int a, int b) { return a / b;} 但是这就有一个问题,当b是0时,程序会报错。如果引入异常...

  • java中异常处理时为什么可以只要try-finally,而可以不要catch啊。_百 ...
  • 答:因为在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常。try、catch、finally三个模块的特点如下:try 块:用于捕获异常。catch 块:用于处理try捕获到的异常。finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。编译器硬性规定,异常如果选择捕获,就必须用catch显示声明以便进行处理...

  • java如何处理异常
  • 答:方法一:try{ \\捕捉异常 代码 }catch (Exception e){ 异常处理,一般写 e.printStackTrace(); 就好了;}finlly{ 不论是否有异常,都会执行的代码。} 方法二:function() throws Exception{ \\抛出异常 代码 }

  • java中 方法中抛出异常处理方法
  • 答:Java语言提供两种异常处理机制:捕获异常和声明抛弃异常。1、捕获异常:(1)在Java程序运行过程中系统得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。(2)找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时...

  • 在java中,异常处理的机制有哪几种,分别是什么
  • 答:C语言中,通过使用if语句来判断是否出现了例外,同时,调用函数通过被调用函数的返回值感知在被调用函数中产生的例外事件并进行处理。全程变量ErroNo常常用来反映一个异常事件的类型。但是,这种错误处理机制会导致不少问题。 Java通过面向对象的方法来处理例外。在一个方法的运行过程中,如果发生了例外,则这个方法生成代表该...

  • java异常处理的机制有哪几种?
  • 答:有两中方式:1.捕获异常,自己处理. \x0d\x0a2.throw出去,让别人处理. \x0d\x0a举个例子: \x0d\x0apublic class A{ \x0d\x0atry{ \x0d\x0a可能发生异常的语句... \x0d\x0a\x0d\x0a}catch(Exception e){ \x0d\x0ae.getMessage();//自己处理 \x0d\x0a} \x0d...

  • java中异常的处理方法有哪两种
  • 答:这样客户端捕获RemoteException后把它写到系统日志里,就很容易进行调试。Java 异常的处理 在 Java 应用程序中,对异常的处理有两种方式:处理异常和声明异常。处理异常:try、catch 和 finally 若要捕获异常,则必须在代码中添加异常处理器块。这种 Java 结构可能包含 3 个部分,都有 Java 关键字。下面的...

  • java异常处理的机制有哪几种?
  • 答:Java语言提供两种异常处理机制:捕获异常和声明抛弃异常;1)捕获异常:在Java程序运行过程中系统得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时系统将终止,...

  • Java编程中异常处理的优劣之道
  • 答:不过,我认为很多人其实并没有真正掌握正确处理异常情况的方法和策略,最多也就不过了解个大概,知道点概念。本文就对三种不同程度和质量的Java异常处理进行了讨论,所阐述的处理异常的方式按手法的高下分为:好,不好和恶劣三种。同时向你提供了一些解决这些问题的技巧。首先解释一些java异常处理中必须搞...

    户户网菜鸟学习
    联系邮箱
    返回顶部
    移动学习网