`
lym6520
  • 浏览: 705641 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

Java 异常处理及其应用

    博客分类:
  • JAVA
阅读更多

Java 异常处理的忌讳
引用


一般不要忽略异常
在异常处理块中,一项最危险的举动是“不加通告”地处理异常。如下例所示:

   try{
       Class.forName("business.domain.Customer");
   }
   catch (ClassNotFoundException exc){}



经常能够在代码块中看到类似的代码块。有人总喜欢在编写代码时简单快速地编写空处理器块,并“自我安慰地”宣称准备在“后期”添加恢复代码,但这个“后期”变成了“无期”。

这种做法有什么坏处?如果异常对应用程序的其他部分确实没有任何负面影响,这未尝不可。但事实往往并非如此,异常会扰乱应用程序的状态。此时,这样的代码无异于掩耳盗铃。

这种做法若影响较轻,则应用程序可能出现怪异行为。例如,应用程序设置的一个值不见了, 或 GUI 失效。若问题严重,则应用程序可能会出现重大问题,因为异常未记录原始故障点,难以处理,如重复的 NullPointerExceptions。

如果采取措施,记录了捕获的异常,则不可能遇到这个问题。实际上,除非确认异常对代码其余部分绝无影响,至少也要作记录。进一步讲,永远不要忽略问题;否则,风险很大,在后期会引发难以预料的后果。

不要使用覆盖式异常处理块
另一个危险的处理是覆盖式处理器(blanket handler)。该代码的基本结构如下:
   try{
     // …
   }
   catch(Exception e){
     // …
   }



使用覆盖式异常处理块有两个前提之一:

1. 代码中只有一类问题。

这可能正确,但即便如此,也不应使用覆盖式异常处理,捕获更具体的异常形式有利物弊。

2. 单个恢复操作始终适用。

这几乎绝对错误。几乎没有哪个方法能放之四海而皆准,能应对出现的任何问题。

分析下这样编写代码将发生的情况。只要方法不断抛出预期的异常集,则一切正常。但是,如果抛出了未预料到的异常,则无法看到要采取的操作。当覆盖式处理器对新异常类执行千篇一律的任务时,只能间接看到异常的处理结果。如果代码没有打印或记录语句,则根本看不到结果。

更糟糕的是,当代码发生变化时,覆盖式处理器将继续作用于所有新异常类型,并以相同方式处理所有类型。

一般不要把特定的异常转化为更通用的异常
将特定的异常转换为更通用异常时一种错误做法。一般而言,这将取消异常起初抛出时产生的上下文,在将异常传到系统的其他位置时,将更难处理。见下例:

   try{
     // Error-prone code
   }
   catch(IOException e){
      String msg = "If you didn ’ t have a problem before,you do now!";
      throw new Exception(msg);
   }



因为没有原始异常的信息,所以处理器块无法确定问题的起因,也不知道如何更正问题。

不要处理能够避免的异常
对于有些异常类型,实际上根本不必处理。通常运行时异常属于此类范畴。在处理空指针或者数据索引等问题时,不必求助于异常处理。




Java 异常处理的应用实例
引用


在定义银行类时,若取钱数大于余额时需要做异常处理。

定义一个异常类 insufficientFundsException。取钱(withdrawal)方法中可能产生异常,条件是余额小于取额。

处理异常在调用 withdrawal 的时候,因此 withdrawal 方法要声明抛出异常,由上一级方法调用。

异常类:

class InsufficientFundsExceptionextends Exception{
   private Bank  excepbank;      // 银行对象
   private double excepAmount;   // 要取的钱
   InsufficientFundsException(Bank ba, double  dAmount)
    {  excepbank=ba;
       excepAmount=dAmount;
   }
   public String excepMessage(){
   	  String  str="The balance is"+excepbank.balance
       + "\n"+"The withdrawal was"+excepAmount;
   	  return str; 	
   }
}// 异常类



银行类:

class Bank{
   double balance;// 存款数
   Bank(double  balance){this.balance=balance;}
   public void deposite(double dAmount){
   	 if(dAmount>0.0) balance+=dAmount;
   }
   public void withdrawal(double dAmount)
               throws  InsufficientFundsException{
   	 if (balance<dAmount)     throw new
          InsufficientFundsException(this, dAmount);
      balance=balance-dAmount;
   }
   public void showBalance(){
      System.out.println("The balance is "+(int)balance);
   }
}



前端调用:

public class ExceptionDemo{
   public static void main(String args[]){
   	 try{
   	    Bank ba=new Bank(50);
          ba.withdrawal(100);
          System.out.println("Withdrawal successful!");
      }catch(InsufficientFundsException e) { 
          System.out.println(e.toString());
          System.out.println(e.excepMessage());
      }
   }
}
 




Java 异常处理及其应用
分享到:
评论

相关推荐

    Java异常处理及应用

    ### Java异常处理及应用 #### 一、引言 异常是指在程序运行过程中发生的非正常事件,例如除零溢出、数组越界、内存溢出等。这些异常事件会导致程序无法正常运行。为了提高程序的健壮性,在设计程序时需要充分考虑...

    Java异常处理及应用.docx

    Java 异常处理及应用 Java 异常处理是 Java 语言的核心组件之一,它是 Java 语言健壮性的一个重要体现。Java 把异常当作对象来处理,并定义一个基类 java.lang.Throwable 作为所有异常的超类。在 Java API 中已经...

    Java异常处理机制及应用.pdf

    Java 异常处理机制及应用 Java 异常处理机制是一种重要的技术,它能够帮助开发者处理 Java 语言中的错误和异常,从而提高程序的可靠性和稳定性。本文将从 Java 异常处理机制的原理、分类、抛出和捕获机制、原则等...

    Java异常处理机制及应用研究.pdf

    Java 异常处理机制及应用研究 Java 异常处理机制是 Java 程序设计的一大难点,也是使用 Java 进行软件开发时不容忽视的问题之一。是否进行异常处理直接关系到开发出的软件的稳定性和健壮性。对 Java 异常处理机制有...

    浅析JAVA异常处理机制.pdf

    ### 浅析JAVA异常处理机制 #### 一、Java异常处理机制概述 异常处理是Java语言中的一个重要机制,它能够确保程序在遇到不可预料的情况时仍能维持稳定运行。异常处理主要包括三个方面:捕获异常、控制程序流程以及...

    Java异常处理终结篇——如何进行Java异常处理设计 - 望远的个人页面 - 开源中国社区1

    Java异常处理设计是Java编程中一个至关重要的环节,它直接影响到程序的稳定性和可维护性。在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时...

    Java异常处理机制及其在项目中的应用.pdf

    Java 异常处理机制及其在项目中的应用 Java 异常处理机制是 Java 语言中的一种错误捕获机制,用于处理程序中的错误和异常。Java 异常处理机制可以分为两大类:Checked Exception 和 Unchecked Exception。Checked ...

    java异常 异常的概念 应用

    通过深入理解和熟练应用Java异常处理,开发者可以编写出更稳定、可维护的代码。异常处理是Java编程中的核心技能,对于构建健壮的系统至关重要。通过学习和实践,你可以更好地应对各种运行时错误,提高代码的可靠性。

    java常见异常处理.ppt

    Java异常处理是编程中至关重要的一个环节,它用于管理和恢复程序在执行过程中可能出现的问题。Java异常分为两大类:错误(Error)和异常(Exception)。错误通常指的是系统级别的问题,如JVM内部错误或资源耗尽,...

    Java 异常处理的 9 个最佳实践

    Java异常处理的9个最佳实践涵盖了开发者在进行Java编程时应当遵循的一系列规则和方法,以确保代码的健壮性和可维护性。异常处理是编程中的一个重要部分,它能够帮助我们更有效地管理和响应程序运行时的错误情况。 ...

    实验六:Java异常处理

    通过这个实验,学生们不仅理解了Java异常处理的基本概念,还学会了如何实际应用这些知识,包括处理不同类型的异常、创建自定义异常以及在实际编程场景中应用异常处理机制。这样的实践有助于提高代码的健壮性和可维护...

    Java异常处理及输入输出流技术实验报告

    Java异常处理和输入输出流技术在Java编程中扮演着至关重要的角色,特别是在开发涉及文件操作的应用程序时。在这个实验报告中,学生被要求设计一个简单的文本编辑器,该编辑器需要具备多文件处理、文件创建、浏览、...

    java内存机制及异常处理

    Java内存机制是Java虚拟机(JVM)的关键组成部分,它管理着程序运行时的数据存储。在Java中,内存主要分为以下几个区域: ...正确理解和运用Java内存机制以及异常处理机制对于开发健壮、高效的Java应用程序至关重要。

    java异常处理试题及答案.doc

    本文档提供了 Java 异常处理试题及答案,涵盖了异常处理的基本概念、关键字、异常类继承关系、异常处理的出口、多重 catch 块、异常抛出和捕捉等知识点。 一、Java 异常处理的基本概念 * 异常是一种对象,所有异常...

    Java异常处理与输入输出.ppt

    Java 异常处理与输入输出 Java 异常处理是 Java 语言中的一种运行错误处理机制,用于处理程序中的运行错误,以确保程序的安全性和稳定性。Java 中定义了许多异常类,每个异常类代表一种运行错误,类中包含了该运行...

    Java\课件\JAVA的异常处理机制.ppt

    以下是关于Java异常处理机制的详细说明: 1. **什么是异常处理机制**: Java的异常处理机制是一种用于处理程序运行时错误的机制,它将原本需要程序员手动检查和处理的错误情况,转变为由系统自动检测和报告。当...

    java开发异常处理与日志规范

    Java开发中的异常处理和日志规范对于保持代码的健壮性和可维护性至关重要。下面将详细阐述这些要点: 1. **避免捕获可预检查的RuntimeException**:在Java中,像NullPointerException和IndexOutOfBoundsException...

    Java异常处理-异常处理知识点总结及企业真题

    Java异常处理是编程中至关重要的一个环节,它确保了程序的稳定性和健壮性。异常是在程序执行过程中遇到的非正常情况,如果不妥善处理,可能导致Java虚拟机(JVM)的异常停止。Java通过异常类来表示不同类型的异常,...

    Java异常处理机制与常见面试题解析

    使用场景及目标:帮助开发人员更好地理解和使用Java异常处理机制,提高代码健壮性和可维护性。同时,为准备Java面试提供有价值的参考资料。 阅读建议:在学习过程中,不仅要关注代码实现细节,还要理解每个异常类和...

    Java异常处理的方法和几个例子源码.rar

    Java异常处理是编程中至关重要的一个环节,它用于在程序...通过阅读和分析这些代码,你可以更直观地理解Java异常处理的工作原理,并学会如何在实际项目中应用。记得在实践中不断调试和测试,以加深对异常处理的理解。

Global site tag (gtag.js) - Google Analytics