Java异常处理操作实例小结

本文实例讲述了Java异常处理操作。分享给大家供大家参考,具体如下:

一 异常处理的使用——能够捕获到异常

1 代码

public class DealException
{
  public static void main( String[] args )
  {
   try
   // 检查这个程序块的代码
   {
     int arr[] = new int[5];
     arr[10] = 7;  // 在这里会出现异常
   }
   catch( ArrayIndexOutOfBoundsException e )
   {
     System.out.println( "数组超出绑定范围!" );
   }
   finally
   // 这个块的程序代码一定会执行
   {
     System.out.println( "这里一定会被执行!" );
   }
   System.out.println( "main()方法结束!" );
  }
}

2 运行

数组超出绑定范围!
这里一定会被执行!
main()方法结束!

二 异常处理的使用——不能够捕获到异常

1 代码

public class DealException
{
  public static void main( String[] args )
  {
   try
   // 检查这个程序块的代码
   {
     int arr[] = new int[5];
     arr[10] = 7;  // 在这里会出现异常
   }
   catch( ArithmeticException e )
   {
     System.out.println( "算术异常" );
   }
   finally
   // 这个块的程序代码一定会执行
   {
     System.out.println( "这里一定会被执行!" );
   }
   System.out.println( "main()方法结束!" );
  }
}

2 运行

这里一定会被执行!
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
    at DealException.main(DealException.java:9)

3 说明

对于未捕获到异常场景,finally语句块会执行,但finally语言块之后的语句不能执行,将异常交给JVM去处理,最后停止程序运行。

三 异常对象ex的使用

1 代码

public class excepObject
{
  public static void main( String[] args )
  {
   try
   {
     int arr[] = new int[5];
     arr[10] = 7;
   }
   catch( ArrayIndexOutOfBoundsException ex )
   {
     System.out.println( "数组超出绑定范围!" );
     System.out.println( "异常:" + ex ); // 显示异常对象e的内容
      // ex.printStackTrace();
   }
   System.out.println( "main()方法结束!" );
  }
}

2 运行

数组超出绑定范围!
异常:java.lang.ArrayIndexOutOfBoundsException: 10
main()方法结束!

四 通过多个catch捕获异常

1 代码

public class arrayException {
  public static void main( String args[] ) {
    System.out.println("-----A、计算开始之前");
    try {
      int arr[] = new int[5];
      ;
      arr[0] = 3;
      arr[1] = 6;
      arr[1] = 0; // 除数为0,有异常
      arr[10] = 7; // 数组下标越界,有异常
      int result = arr[0] / arr[1];
      System.out.println("------B、除法计算结果:" + result);
    } catch (ArithmeticException ex) {
      ex.printStackTrace();
    } catch (ArrayIndexOutOfBoundsException ex) {
      ex.printStackTrace();
    } finally {
      System.out.println("-----此处不管是否出错,都会执行!!!");
    }
    System.out.println("-----C、计算结束之后。");
  }
}

2 运行

-----A、计算开始之前
java.lang.ArrayIndexOutOfBoundsException: 10
    at arrayException.main(arrayException.java:19)
-----此处不管是否出错,都会执行!!!
-----C、计算结束之后。

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

时间: 2019-07-16

Java异常分类及统一处理详解

一.异常分类 java异常分为"检查"和"非检查"两类,"检查"二字的意思是,代码编译时,编译器会去Check一下有没有进行异常处理(捕获或向上抛),对于归类为需要检查的异常,若没处理,编译就过不去.        初学的时候,常常想为啥异常要这样分类处理? 后来明白了些,异常不过两种:主观和客观,一个大多数情况下可以避免,一个大多数情况下无法避免.        像NullPointerException这类异常,大多跟程序员素质挂钩(开发好,

Java异常处理 如何跟踪异常的传播路径

当程序中出现异常时,JVM会依据方法调用顺序依次查找有关的错误处理程序. 可使用printStackTrace 和 getMessage方法了解异常发生的情况: printStackTrace:打印方法调用堆栈. 每个Throwable类的对象都有一个getMessage方法,它返回一个字串,这个字串是在Exception构造函数中传入的,通常让这一字串包含特定异常的相关信息. 示例程序 // UsingExceptions.java // Demonstrating the getMessag

JAVA异常分类和处理解析

前言 如果,某个方法不能按照正常的途径完成任务,就可以通过另一个路径退出方法,在这种情况下会抛出一个封装了错误信息的对象,此时,这个方法会立刻退出且不会返回任何值,调用此方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器. Throwable是JAVA语言中所有错误或异常的超类,下一层分为error或者Exception. Error: Error类是指系统的内部错误和资源耗尽的错误,应用程序不会抛出该类对象,如果出现这样的错误,应用程序会尽量让程序安全的终止. Excepti

如何利用Retrofit+RxJava实现网络请求的异常处理

通常情况下我们在与服务器进行通信的时候,不一定就不会出错,有时会出现其他的错误,这个时候我们只要和服务器约定好各种异常,在返回结果处进行判断,到底是执行错误,还是返回正常数据.具体的思路大致就是这样.这里我们定义ExceptionHandle,这里我参考网上的东西,然后稍微做了一些改动. ExceptionHandle public class ExceptionHandle { private static final int UNAUTHORIZED = 401; private stati

在Java8中如何风骚走位的避开空指针异常

前言 要说 Java 编程中哪个异常是你印象最深刻的,那 NullPointerException 空指针可以说是臭名昭著的.不要说初级程序员会碰到, 即使是中级,专家级程序员稍不留神,就会掉入这个坑里. Null 引用的发明者Tony Hoare 曾在 2009 年作出道歉声明,声明中表示,到目前为止,空指针异常大约给企业已造成数十亿美元的损失. 下面是 Tony Hoare 的原话: 我将 Null 引用的设计称为是一个数十亿美元的错误.1965 那年,我正在用面向对象语言(ALGOL W)

JAVA抛出异常的三种形式详解

一.系统自动抛出异常 当程序语句出现一些逻辑错误.主义错误或者类型转换错误时,系统会自动抛出异常 例一 public static void main(String[] args) { int a = 5; int b = 0; System.out.println( a / b); } 运行结果,系统会自动抛出ArithmeticException异常 Exception in thread "main" java.lang.ArithmeticException: / by zer

php数组(array)输出的三种形式详解

复制代码 代码如下: $bbbb=array("11"=>"aaa","22"=>"bbb");//只能输出值value不能输出keyforeach($bbbb as $color){ echo $color;}//value与key都可输出foreach($bbbb as $key=>$value){ echo $key."=>".$value;} //value与key都可输出w

Java设计模式之23种设计模式详解

一.什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是

Service Activity的三种交互方式(详解)

service有两种类型: 本地服务(Local Service):用于应用程序内部 远程服务(Remote Sercie):用于android系统内部的应用程序之间 前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好. 后者可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可. 编写不需和Activity交互的本地服务示例 本地服务编写比较简单.首先,要创建一个Se

python解析命令行参数的三种方法详解

这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法:sys.argv.argparse解析.getopt解析 方法一:sys.argv -- 命令行执行:python test_命令行传参.py 1,2,3 1000 # test_命令行传参.py import sys def para_input(): print(len(sys.argv)) #

SpringMVC统一异常处理三种方法详解

这篇文章主要介绍了SpringMVC-统一异常处理三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在 Spring MVC 应用的开发中,不管是对底层数据库操作,还是业务层或控制层操作,都会不可避免地遇到各种可预知的.不可预知的异常需要处理. 如果每个过程都单独处理异常,那么系统的代码耦合度高,工作量大且不好统一,以后维护的工作量也很大. 如果能将所有类型的异常处理从各层中解耦出来,这样既保证了相关处理过程的功能单一,又实现了异常信

基于java 线程的几种状态(详解)

线程可以有六种状态: 1.New(新创建) 2.Runnable(可运行)(运行) 3.Blocked(被阻塞) 4.Waiting(等待) 5.Timed waiting(计时等待) 6.Terminated(被终止) 新创建线程: 当用new操作符创建一个新线程时,如new Thread(r),该线程还没有开始运行,它的当前状态为new,在线程运行之前还有一些基础工作要做. 可运行线程: 一旦线程调用start方法,线程处于runnable状态.在这个状态下的线程可能正在运行也可能没有运行(

Android 三种动画详解及简单实例

Android 三种动画详解 帧动画 一张张图片不断的切换,形成动画效果 在drawable目录下定义xml文件,子节点为animation-list,在这里定义要显示的图片和每张图片的显示时长 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="

基于java解析JSON的三种方式详解

本文实例分析了基于java解析JSON的三种方式.分享给大家供大家参考,具体如下: 一.什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标注. {} 双括号表示对象 [] 中括号表示数组 "" 双引号内是属性或值 : 冒号表示后者是前者的值(这个值可以是字符串.数字.也可以是另一个数组或对象) 所以 {"name"

Tomcat 部署项目的三种方法详解

1.下载 Tomcat 服务器 ①.官网下载地址:http://tomcat.apache.org/ ②.Tomcat 8.5.11 32位/64位 官方免费版下载地址:http://www.jb51.net/softs/537911.html 2.启动并部署 Tomcat 服务器 ①.解压 tomcat 安装包到一个非中文目录下 ②.配置环境变量.JAVA_HOME(指向 JDK 安装的根目录) ③.双击 apache-tomcat-6.0.16\bin 目录下的 startup.bat,启动