`

异常及其处理方式

阅读更多
计算机毕竟是机器,因为其硬件或软件的限制,对于有些情况超过了计算机的处理能力,例如,除数为零出现的无穷大的商等,像这类的操作将会导致程序的中止或者系统的崩溃,这些可能引起程序非正常运行的错误,称为异常,在Java中就提供了异常类Throwable及处理这些异常的语句结构。


一、try…catch/try…catch…finally异常处理语句处理
Exception类异常的处理格式语法如下:
try{
// 有可能发生异常的代码段
}catch(异常类型1 对象1){
// 异常的处理操作
}catch(异常类型2 对象2){
// 异常的处理操作
} ...
【finally{
// 异常的统一出口,不管是否有异常,都要执行该处的语句
}】
说明:
(1)一旦产生异常,则系统会自动产生一个异常类的实例化对象;
(2)如果程序中没有try语句或在try语句之外产生的异常,则将有系统报告错误;
(3)一旦有异常产生,在try语句之中的异常产生之后的代码也将不再执行;
(4)try语句中有异常发生时,产生的异常类的实例化对象依次与catch方法的参数进行匹配,如果匹配成功,则表示由此catch进行处理,不再继续检查之后的catch语句,如果到最后都没有与之匹配的catch语句,将交由系统报告错误;因此为了准确定位异常的位置和原因,捕获更粗的异常不能放在捕获更细的异常之前;
(5)从之前的说明图中可以看出,Exception类是所有异常的父类,那么如果将catch的参数设置成Exception类型,表示将捕获所有的异常(各异常对象将发生向上转型),所以有时候会将最后一个catch语句的参数设置为Exception类,这样当前面没有与之精确配对的参数时,都将交由此catch语句处理;
(6)在进行异常捕获及处理的时候,不要使用Throwable作为捕获的类型,因为范围太大了;
例如:
public class ExceptionDemo{
public static void main(String argsp[]){
  int i = 0 ;
  int j = 0 ;
  System.out.println("============= 计算开始 =============") ;
  int temp = 0 ; // 要在外部定义
  try{
   i = Integer.parseInt(argsp[0]) ; // 将第一个输入参数变为int型
   j = Integer.parseInt(argsp[1]) ; // 将第二个输入参数变为int型
   System.out.println("********************************") ;
   temp = i / j ; // 进行除法运算
   System.out.println("------------------------------------------------") ;
  }catch(ArithmeticException e){
   System.out.println("发生了算术异常:" + e) ; // 打印异常对象,调用toString()方法
  }catch(ArrayIndexOutOfBoundsException e){
   System.out.println("输入错误参数异常:" + e) ;
  }catch(NumberFormatException e){
   System.out.println("输入的参数不是数字异常:" + e) ;
  }catch(Exception e){
   //System.out.println("其他异常:" + e) ;
e.printStackTrace() ; // 打印异常信息,这种方式打印出的信息是最全的
  }finally{
  System.out.println("============= 计算结束 =============") ;
         }
System.out.println("temp = " + temp) ;
}
};
二、Throws关键字
此关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。
例如:public static int parseInt(String s)throws NumberFormatException
如果某个方法定义的时候加了“throws 异常名称”的说明,而且该不是的异常,那么调用该方法的地方必须明确的使用try..catch进行异常的捕获处理,而不管是否真的会发生异常;
例如:
class Math{
public static int div(int i,int j) throws Exception{ // 此方法有可能出现异常
  int temp = 0 ;
  temp = i / j ;
  return temp ;
}
};
public class WrapDemo03{
public static void main(String argsp[]){
  try{//因为div()方法在声明时加了throws Exception,那么此处必须加try…catch语句处理
   System.out.println(new Math().div(10,2)) ; // 此方法不管是否有异常,都需要进行处理
  }catch(Exception e){
   e.printStackTrace() ;
  }
}
};
说明:如果在主方法上使用了thorws关键字声明的话,表示所有的异常将由JVM进行处理,实际上对于Java程序来讲,如果没有加入任何的异常处理,则默认就将由JVM进行异常的处理操作。
class Math{
public int div(int i,int j) throws Exception{ // 此方法有可能出现异常
  int temp = 0 ;
  temp = i / j ;
  return temp ;
}
};
public class ExceptionDemo10{
public static void main(String argsp[]) throws Exception{ // 所有的异常交由JVM进行处理
  System.out.println(new Math().div(10,0)) ;
}
};
三、throw关键字
throw关键字表示在程序中人为的抛出一个异常。
在程序中都会尽量的避免异常的产生,为什么还要存在throw人为的抛异常呢?
因为在设计方法的时候一般不考虑或者不直接在方法中处理异常,而是将异常交由调用方自己选择处理方式,所以在方法定义的时候加上throws关键字,而在程序try…catch语句中将捕获的异常用throw关键字直接抛出;
四、异常处理的标准格式
在实际的开发中,try、catch、finally、throw、throws五个关键字是要一起联合使用的。
例如:
class Math{
public int div(int i,int j) throws Exception{ // 此方法有可能出现异常
  System.out.println("===== 计算开始 =====") ;
  int temp = 0 ;
  try{
   temp = i / j ;
  }catch(Exception e){
   throw e ; // 所有异常抛出,而不直接处理
  }finally{
   System.out.println("===== 计算结束 =====") ;//不管是否有异常将执行该语句
  }
  return temp ;
}
};
public class ExceptionDemo12{
public static void main(String argsp[]){
  try{
   System.out.println(new Math().div(10,0)) ; // 此方法不管是否有异常,都需要进行处理
  }catch(Exception e){
   e.printStackTrace() ; // 打印异常信息,这种方式打印出的信息是最全的
  }
}
};

五、自定义异常类
在Java中,已经提供了很多的异常类的定义,但是在开发一些个人的系统中可能需要使用一些特殊的个性化的异常类的操作,那么此时就可以通过继承Exception类的方式完成一个自定义异常类的操作。
例如:
class MyException extends Exception{ // 继承Exception,表示一个自定义异常类
public MyException(String msg){
  super(msg) ; // 调用Exception中有一个参数的构造
}
};
public class ExceptionDemo14{
public static void main(String argsp[]){
  try{
   throw new MyException("自己定义,抛着玩的。") ;
  }catch(Exception e){
   e.printStackTrace() ;
  }
}
};
分享到:
评论

相关推荐

    C+ + VC+ + 语言的异常及其处理方法

    C++与VC++语言的异常及其处理方法是一个深入理解现代编程语言如何管理错误和异常的重要主题。在传统的面向过程的编程语言中,错误处理通常涉及在代码中混合错误检查和常规逻辑,导致代码冗长且难以维护。然而,C++与...

    异常值的类型及其处理方法

    ### 异常值的类型及其处理方法 #### 异常值概述 异常值是指在数据集中与其他观测值相比显著偏离的数据点。这类数据点往往暗示着由不同的机制生成。异常值检测是数据挖掘中的一个重要环节,它对于数据分析、模型...

    异常处理技术及其编程应用

    除了上述方法,还可以使用`SetUnhandledExceptionFilter`函数设置未处理异常过滤器,自定义异常处理程序,这样可以在程序未捕获异常时执行特定的处理逻辑,如记录日志、生成dump文件等,进一步帮助分析问题。...

    内存出现异常的几种故障及其处理方法

    本文将深入探讨内存出现异常的几种常见故障及其处理方法,帮助用户及时识别并解决内存问题。 ### 内存异常的几种故障 #### 1. 内存控制错误(Error Unable to Control A20 Line) A20线控制问题通常与主板或BIOS...

    Java_Jdbc_Hibernate_Struts2_Android_Web异常及其处理办法

    如果一个方法可能会抛出异常但不想在当前方法中处理,可以使用`throws`声明异常。 1. `NullPointerException`: 这个异常发生在尝试访问或操作一个`null`引用的对象时。要解决这个问题,开发者应该检查变量是否已...

    异常处理的解决方案

    ### 异常处理的解决方案 #### 错误与异常处理概览 在软件开发中,错误和异常处理是一项至关重要的任务。无论编程技术多么高超,编写能够妥善处理潜在错误的程序都是必不可少的。错误可能源于多种原因,比如权限...

    电网调度监控异常及其处理-论文.zip

    电网调度监控异常及其处理是电力系统运行中的关键环节,它涉及到电力系统的稳定、安全与高效。这篇论文可能深入探讨了电网调度过程中可能出现的各种异常情况,以及相应的预防和处理策略。以下是一些可能涵盖的知识点...

    异常的分类以及处理方法

    本文将重点介绍异常的基本分类及其处理方法,并针对“有时无法catch exception,这时需要考虑异常可能是Error导致的”这一情况提供详细的分析和解决方案。 #### 一、异常基本概念 在Java中,异常(Exception)是指...

    delphi 异常处理和程序检错

    这个结构使得开发者可以根据不同的异常类型来设计不同的处理逻辑,从而更有针对性地解决问题。例如,代码中的on EInOutError do或on EAccessDenied do语句分别处理了输入输出错误和访问被拒绝的异常。此外,如果在...

    struts常见异常及处理

    以上总结了 Struts 框架开发过程中常见的异常及其处理方法。针对每种异常,都给出了详细的解释与解决步骤。开发者可以根据实际情况选择合适的解决方案来解决问题。需要注意的是,在排查异常时,应结合异常的具体信息...

    论文研究-异常值的处理方法分析及其应用.pdf

    论文研究-异常值的处理方法分析及其应用.pdf, 产品研制试验过程中提出的不少问题均涉及到统计分析中异常子样的处理。对于异常子样,最好能分析出明确的物理或工程技术方面的原因,然后决定取舍。但如果这种分析极其...

    Java Web开发异常处理方式及AOP技术

    通过这种方式,我们可以统一处理服务层的所有空指针异常,而无需在每个方法内部重复编写异常处理代码。 综上所述,Java Web开发中的异常处理涉及多种策略,包括基础的try-catch-finally、Servlet的异常处理机制、...

    ARM异常处理机制ARM异常处理机制

    #### 二、ARM处理器的异常类型及其特点 ARM处理器支持七种异常中断,每种异常都有自己的固定向量地址,具体包括: 1. **复位(Reset)**:地址0x00000000,触发方式为系统启动或硬件复位,进入特权模式。 2. **...

    JCVM异常处理机制

    这种方法使得JCVM能够在遇到异常时快速定位到正确的处理代码,并执行相应的`catch`块或`finally`块。这不仅简化了异常处理流程,还提高了智能卡应用程序的执行效率。 #### 三、JCVM异常处理机制的设计与实现 在...

    一个未能解决的异常

    - **文档记录**:对异常及其处理方式进行详细的文档记录,方便维护和扩展。 综上所述,“一个未能解决的异常”是编程中常见的问题之一。通过对异常处理的基础知识、原因分析以及解决方案的深入了解,可以有效地避免...

    Windows下的异常处理

    下面我们将详细探讨Windows下的异常处理机制及其相关知识点。 一、异常的基本概念 异常是程序执行过程中遇到的非正常情况,如除零错误、访问无效内存地址、硬件故障等。在Windows中,异常由处理器硬件引发,然后由...

    Jsp中常见异常解答

    本文将详细解析JSP开发中常见的异常及其解决方法。 #### 1. **Servlet 异常** 在JSP中,Servlet是其背后的主要技术之一。当Servlet执行时出现错误或异常时,通常会导致JSP页面无法正常渲染。例如: - **...

    javaweb编程中常见的异常及处理方法.doc

    掌握常见异常及其处理方法是确保应用程序稳定运行的关键。本文将重点介绍一种常见的异常——`java.lang.IllegalArgumentException: argument type mismatch`,并详细解析其成因与解决策略。 #### 异常示例 在...

Global site tag (gtag.js) - Google Analytics