`
韬光养晦
  • 浏览: 70804 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

JAVA-异常的捕获及处理

 
阅读更多

 

异常的捕获及处理

n  异常的概念:

Java的异常处理机制中,引进了很多用来描述和处理异常的类,称为异常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法。

Java中,将异常情况分为Exception(异常)和Error(错误)两大类。

异常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等。

所谓异常处理,就是指程序在出现问题时依然可以正确的执行完

n  异常类的层次和主要子类

 异常类(java.lang.Exception)继承于java.lang.Object中的java.lang.Throwable类。异常可分为执行异常(RuntimeException)和检查异常(Checked Exceptions)两种

Ø  执行异常

继承于RuntimeException

Ø  检查异常

除了执行异常外,其余的Exception子类属于检查异常类

Throwable

Error

Exception

Object

AWTException

RuntimeException

IOException

……

 

 

 

 

 

 

 

 

 

执行异常及其用途

异常

说明

RuntimeException

java.lang包中多数异常的基类

ArithmeticException

算术错误,如除以 0

IllegalArgumentException

方法收到非法参数

ArrayIndexOutOfBoundsException

数组下标出界

StringIndexOutOfBoundsException

字符串越界

NumberFormatException

String转换为指定的数字类型

NullPointerException

试图访问 null 对象引用

SecurityException

试图违反安全性

ClassNotFoundException

不能加载请求的类

 

 

检查异常及其用途

异常

说明

AWTException

AWT 中的异常

IOException

I/O 异常的根类

FileNotFoundException

不能找到文件

EOFException

文件结束

IllegalAccessException

对类的访问被拒绝

NoSuchMethodException

请求的方法不存在

InterruptedException

线程中断

 

 

 

n  异常处理格式

异常处理方法有两种:

一种方法是使用trycatchfinally结构对异常进行捕获和处理;

另一种方法是通过throwsthrow抛出异常。

Ø  捕获异常try-catch-finally

Java的异常处理是通过3个关键词来实现的:try-catch-finally。用try来执行一段程序,如果出现异常,系统抛出(throws)一个异常,可以通过它的类型来捕捉(catch)并处理它,最后一步是通过finally语句为异常处理提供一个统一的出口,finally所指定的代码都要被执行catch语句可有多条;finally语句最多只能有一条,根据自己的需要可要可不要)

try{

可能出现异常的语句

}

catch(异常类  异常对象)

{

       异常处理

}

catch(异常类  异常对象)

{

       异常处理

}

 

......

 

finally

{

       异常的出口;

}

 

 

1try语句

捕获异常的第一步就是用try {}语句指定了一段代码,该段代码就是一次捕获并处理异常的范围。在执行过程中,该段代码可能会产生并抛弃一个或多个异常,因此,它后面的catch语句进行捕获时也要做相应的处理。

2catch语句

每个try语句必须伴随一个或多个catch语句,用于捕获try代码块所产生的异常并做相应的处理。 catch语句有一个形式参数,用于指明其所能捕获得异常类型,运行时系统通过参数值把被抛弃的异常对象传递给catch语句

3finally语句

捕获异常的最后一步是通过finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态作统一的管理, finally所指定的代码都要被执行

 

 

public class ExceptionDemo01

{public static void main(String[] args)

       { 

       int i = 10 ;

       int j = 0 ;

       System.out.println("========== 计算开始 ===========") ;

       try{

              int temp = i / j ;

              System.out.println("计算结果:" + temp) ;

              }

    catch(ArithmeticException e){

              System.out.println("出现了数学异常:" + e) ;

              }

 

              System.out.println("========== 计算结束 ===========") ;

       }

}

 

 

 

 

public class ExceptionDemo02

{public static void main(String[] args)

       { 

              int i = 0 ;

              int j = 0 ;

              System.out.println("========== 计算开始 ===========") ;

              try{

                     i = Integer.parseInt(args[0]) ;

                     j = Integer.parseInt(args[1]) ;

                     int temp = i / j ;

                     System.out.println("计算结果:" + temp) ;

              }catch(ArithmeticException e){

                     System.out.println("出现了数学异常:" + e) ;

              }catch(NumberFormatException e){

                     System.out.println("输入的不是数字:" + e) ;

              }catch(ArrayIndexOutOfBoundsException e){

                     System.out.println("输入的参数个数不对:" + e) ;

              }finally{

                     System.out.println("不管是否有异常,我都执行。") ;

              }

              System.out.println("========== 计算结束 ===========") ;

       }

}

Ø  通过throwsthrow抛出异常

throws方法:

throws关键字的最大好处是:在方法中不处理任何的异常,而交给被调用处处理。

格式:

类型 方法名(参数) throws 异常类

如:public int read() throws IOException { … }

throws子句中可以同时指明多个异常,说明该方法将不对这些异常进行处理,而是声明抛弃它们

class Math{

      public int div(int i,int j) throws ArithmeticException   // 除数为0异常

{

              return i / j ;

          }

}

public class ExceptionDemo03{

       public static void main(String args[]){

              Math m = new Math() ;

              try{

                     int temp = m.div(10,0) ;

                     System.out.println(temp) ;

              }catch(Exception e){

                     e.printStackTrace() ;      // 打印异常

              }

       }

}

 

throw方法

在程序中可以使用throw关键字人为的抛出一个异常。

在异常处理中,实际上每次产生异常的时候都是产生了一个异常类的实例化对象。那么此时,也可以通过抛出异常对象的方式完成。

public class ExceptionDemo04{

       public static void main(String args[]){

              try{

                     throw new Exception("抛着玩的。") ; // 人为抛出

              }catch(Exception e){

                     System.out.println(e) ;

              }

       }

};

 

 

 

 

 

自定义异常类:

import java.io.*;

class MyException extends Exception //创建自定义异常类,继承Exception

{public MyException(String ErrorMessagr)  //构造方法

      { super(ErrorMessagr); }    //父类构造方法

}

public class ExceptionDemo05

{static int avg(int number1, int number2)throws MyException //定义方法,抛出异常

   {

       if (number1 < 0 || number2 < 0)      //判断方法中参数是否满足指定条件

        throw new MyException("不可以使用负数");  //错误信息

 

    if (number1 > 10000 || number2 > 10000) //判断方法中参数是否满足指定条件

        throw new MyException("数值太大了");   //错误信息

 

    return (number1 + number2) / 2;     //将参数的平均值返回

   }

 public static void main(String args[])throws IOException

   {

       try {           //try代码块处理可能出现异常的代码

       int result = avg(-3000, 8500);      //调用avg()方法

       System.out.println("平均工资:"+result);      //avg()方法的返回值输出

           }

    catch (MyException e)

              { System.out.println(e) ;}     //输出异常信息     

       }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

public class ExceptionDemo06{

       public static void main(String args[]){

              int i = 0 ;

              int j = 0 ;

              System.out.println("========== 计算开始 ===========") ;

              try{

                     i = Integer.parseInt(args[0]) ;

                     j = Integer.parseInt(args[1]) ;

                     int temp = i / j ;

                     System.out.println("计算结果:" + temp) ;

              }catch(ArithmeticException e){

                     System.out.println("出现了数学异常:" + e) ;

              }catch(NumberFormatException e){

                     System.out.println("输入的不是数字:" + e) ;

              }catch(ArrayIndexOutOfBoundsException e){

                     System.out.println("输入的参数个数不对:" + e) ;

              }catch(Exception e){

                     System.out.println("其他异常:" + e) ;

              }finally{

                     System.out.println("** 不管是否有异常,我都执行。") ;

              }

              System.out.println("========== 计算结束 ===========") ;

       }

};

注意:捕获更细的异常要放在捕获更粗的异常之前。

 

 

分享到:
评论
1 楼 我没名字30 2017-04-01  

相关推荐

    java异常的捕获及处理

    Java 异常的捕获及处理 Java 异常的捕获及处理是 Java 语言中的一种重要机制,它可以帮助开发者捕获和处理程序中的异常,从而确保程序的稳定运行。在本篇文章中,我们将详细介绍 Java 异常的捕获及处理机制,包括...

    Java异常的捕获及处理

    mldn中李新华老师关于Java异常的捕获及处理的课堂记录

    北大Java--异常处理

    ### 北大Java--异常处理:深入理解与实践 #### 异常处理概念与重要性 在编程领域,尤其在Java开发中,异常处理是一项关键技能。它涉及到如何优雅地应对程序运行期间可能出现的错误,确保应用程序的稳定性和用户...

    java-异常处理

    Java异常处理的核心在于使用异常类来表示各种错误情况,并通过特定的关键字来实现异常的捕获和处理。基本流程包括: 1. **定义异常**:Java中异常通常继承自`Throwable`类,其中包括两大类:`Error`和`Exception`。...

    java实验报告4-异常处理

    Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。本实验报告“java实验报告4-异常处理”旨在帮助初学者掌握Java中的异常处理机制,以及如何利用log4j进行日志...

    java高端技术课程--Java异常处理详解

    Java异常处理是Java编程中一个至关重要的概念,它关乎到程序的健壮性和稳定性。在Java语言中,异常处理提供了一种机制,使得程序在遇到错误或非正常情况时能够优雅地处理问题,而不是突然崩溃。这个“java高端技术...

    Java异常处理-异常处理概述与常见异常举例

    Java异常处理通过try-catch-finally语句块实现,try块包含可能抛出异常的代码,catch块捕获并处理异常,finally块确保某些代码(如资源释放)始终执行。 二、Java异常体系 1- Throwable 所有异常的顶级父类是java....

    try-catch-finally捕获异常

    try-catch-finally语句是Java语言中一种常用的异常处理机制,当程序在执行过程中出现异常时,可以使用try-catch-finally语句来捕获和处理异常。下面将详细介绍try-catch-finally语句的使用方法和注意事项。 一、try...

    Java-Java异常处理教程

    Java异常处理是编程中至关重要的一个环节,它帮助开发者在程序运行时捕获并处理错误,确保程序的健壮性和稳定性。在这个Java异常处理教程中,我们将深入探讨这个主题,以便提升你的Java编程技能。 首先,Java异常是...

    mysql-connector-java-3.0.16-ga-bin.jar

    8. **异常处理**:当发生错误时,MySQL Connector/J会抛出Java异常,如`SQLException`,方便开发者捕获并处理。 9. **性能优化**:通过使用最新的协议和压缩技术,可以减少网络传输的数据量,从而提高性能。 10. *...

    mysql连接包mysql-connector-java-5.1.27.jar

    10. **异常处理**:在处理数据库操作时,必须捕获并适当地处理可能出现的`SQLException`和其他相关异常。 总的来说,`mysql-connector-java-5.1.27.jar`是Java开发者连接到MySQL数据库的关键组件,它提供了与MySQL...

    dubbo捕获自定义异常_dubbo异常捕获_dubbo异常_自定义异常_捕捉异常_

    总之,通过以上步骤,你可以充分利用 Dubbo 的异常处理机制,确保在分布式环境中,服务消费者能有效地捕获和处理来自服务提供者的自定义异常。这不仅提高了代码的可读性和可维护性,还能提高整个系统的稳定性和用户...

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

    运行时异常在程序运行时抛出,如数组越界、空指针异常等,虽然不强制处理,但建议进行捕获处理,以提高程序的健壮性。 异常处理的主要方式是使用`try-catch-finally`结构。`try`块包含可能抛出异常的代码,当异常...

    Java异常处理-异常处理的方式1

    Java异常处理机制是一种优雅的错误处理方式,它允许开发者在程序中集中处理可能出现的问题,而不会使代码变得混乱。在Java中,异常处理主要通过两种方式实现:捕获异常(try-catch-finally)和声明异常(throws + ...

    JAVA基础--如何通过异常处理错误

    JAVA基础--如何通过异常处理错误 JAVA是一种面向对象的编程语言,它提供了强大的异常处理机制,以便更好地处理程序中的错误和异常。在JAVA中,异常是指程序在执行过程中发生的错误或意外情况,例如除数为零、数组...

    大学课程讲义-Java基础-异常处理.pptx

    Java 异常处理机制是通过 try-catch 语句来捕获和处理异常的。 异常概述 在 Java 中,将程序执行中发生的不正常情况称为“异常”。Java 中的异常用于处理非预期的情况,如文件没找到,网络错误,非法的参数等。...

    JAVA范例 四)异常处理---编译时异常、运行时异常

    本文将深入探讨"JAVA范例 四)异常处理---编译时异常、运行时异常"这个主题,结合标签"源码"和"工具",我们可以理解这与实际编程实践和可能使用的开发工具如Struts2框架相关。 首先,我们来看编译时异常。编译时...

    java全局异常统一处理

    其中,使用Java异常处理机制实现全局异常统一处理是最常见的方式。 在Java异常处理机制中,当一个方法抛出异常时,该异常将被传递到调用该方法的方法中,直到找到能够处理该异常的代码为止。在这个过程中,Java使用...

    Java-异常(习题).doc

    ### Java异常知识点详解 #### 一、异常的概念与分类 **异常**是在程序运行过程中发生的任何不期望的情况或错误状态,这些情况会干扰程序的正常执行流程。在Java中,异常处理是一种强大的机制,用于处理运行时错误...

    Java学习资料-异常处理

    Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能优雅地处理问题,而不是突然崩溃。在Java中,异常是程序运行时出现的非正常情况,它们中断了程序的正常流程。异常处理是Java提供的一种机制,...

Global site tag (gtag.js) - Google Analytics