第07章异常的捕获及处理_第1页
第07章异常的捕获及处理_第2页
第07章异常的捕获及处理_第3页
第07章异常的捕获及处理_第4页
第07章异常的捕获及处理_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中兴软件技术(南昌)培训中心中兴软件技术(南昌)培训中心了解异常的产生原理。掌握异常处理语句的基本格式。掌握throw和throws关键字的作用。可以自定义异常。了解Exception与RuntimeException的区别。了解断言的作用。中兴软件技术(南昌)培训中心 异常是导致程序中断运行的一种指令流导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正常的执行。 中兴软件技术(南昌)培训中心public class ExceptionDemo01 publ

2、ic static void main(String args)System.out.println(* 计算开始 *) ;int i = 10 ;/ 定义整型变量int j = 0 ;/ 定义整型变量int temp = i / j ;/ 此处会产生异常System.out.println(两个数字相除结果:+temp) ;System.out.println(* 计算结束 *) ;中兴软件技术(南昌)培训中心中兴软件技术(南昌)培训中心try/ 有可能出现异常的语句有可能出现异常的语句catch(异常类异常类 异常对象异常对象)/ 编写异常的处理语句编写异常的处理语句 catch(异常类异

3、常类 异常对象异常对象)/ 编写异常的处理语句编写异常的处理语句 catch(异常类异常类 异常对象异常对象)/ 编写异常的处理语句编写异常的处理语句 . finally 一定会运行到的程序代码一定会运行到的程序代码 ; 中兴软件技术(南昌)培训中心中兴软件技术(南昌)培训中心public class ExceptionDemo02 public static void main(String args)System.out.println(* 计算开始 *) ;int i = 10 ;/ 定义整型变量int j = 0 ;/ 定义整型变量tryint temp = i / j ;/ 此处会产

4、生异常System.out.println(两个数字相除结果: + temp) ;/ 此代码不再执行System.out.println(-) ;/ 此代码不再执行catch(ArithmeticException e)/ 捕捉算术异常System.out.println(出现异常了: + e) ;/ 出现异常执行异常处理语句System.out.println(* 计算结束 *) ;中兴软件技术(南昌)培训中心中兴软件技术(南昌)培训中心public class ExceptionDemo03 public static void main(String args)System.out.pr

5、intln(* 计算开始 *) ;int i = 10 ;/ 定义整型变量int j = 0 ;/ 定义整型变量tryint temp = i / j ;/ 此处会产生异常System.out.println(两个数字相除结果: + temp) ;/ 此代码不再执行System.out.println(-) ;/ 此代码不再执行catch(ArithmeticException e)/ 捕捉算术异常System.out.println(出现异常了: + e) ;/ 出现异常执行异常处理语句finally/ 异常的统一出口System.out.println(不管是否出现异常,都执行此代码);S

6、ystem.out.println(* 计算结束 *) ;中兴软件技术(南昌)培训中心public class ExceptionDemo04 public static void main(String args)System.out.println(* 计算开始 *) ;int i = 0 ;/ 定义整型变量int j = 0 ;/ 定义整型变量tryString str1 = args0 ;/ 接收第一个参数String str2 = args1 ;/ 接收第二个参数i = Integer.parseInt(str1) ;/ 将第一个参数由字符串变为整型j = Integer.parse

7、Int(str2) ;/ 将第二个参数由字符串变为整型int temp = i / j ;/ 此处会产生异常System.out.println(两个数字相除结果: + temp) ;/ 此代码不再执行System.out.println(-) ;/ 此代码不再执行catch(ArithmeticException e)/ 捕捉算术异常System.out.println(出现异常了: + e) ;/ 出现异常执行异常处理语句System.out.println(* 计算结束 *) ;中兴软件技术(南昌)培训中心以上的程序实际上产生了三个比较明显的异常: 数组超出边界异常:ArrayIndex

8、OutOfBoundsException 数字格式化异常:NumberFormatException 算术异常:ArithmeticException 此时如果要想保持程序的执行正确,就必须同时对三个异常进行处理,所以此时的catch语句应该有三个,以分别处理不同的异常。 中兴软件技术(南昌)培训中心public class ExceptionDemo05 public static void main(String args)System.out.println(* 计算开始 *) ;int i = 0 ;/ 定义整型变量int j = 0 ;/ 定义整型变量tryString str1 =

9、 args0 ;/ 接收第一个参数String str2 = args1 ;/ 接收第二个参数i = Integer.parseInt(str1) ;/ 将第一个参数由字符串变为整型j = Integer.parseInt(str2) ;/ 将第二个参数由字符串变为整型int temp = i / j ;/ 此处会产生异常System.out.println(两个数字相除结果: + temp) ;/ 此代码不再执行System.out.println(-) ;/ 此代码不再执行catch(ArithmeticException e)/ 捕捉算术异常System.out.println(算术异常

10、: + e) ;/ 处理算术异常catch(NumberFormatException e)System.out.println(数字转换异常: + e) ;/ 处理数字转换异常catch(ArrayIndexOutOfBoundsException e)System.out.println(数组越界异常: + e) ;/ 处理数组越界System.out.println(* 计算结束 *) ;中兴软件技术(南昌)培训中心在整个java的异常结构中,实际上由以下两个最常用的类:Exception、Error,这两个类全都是Throwable的子类。 Exception:一般表示的是程序中出现的

11、问题,可以直接使用trycatch处理。 Error:一般指的是JVM错误,程序中无法处理。中兴软件技术(南昌)培训中心在整个java的异常处理中,实际上也是按照面向对象的方式进行处理,处理的步骤如下: 一旦产生异常,则首先会产生一个异常类的实例化对象; 在try语句中对此异常对象进行捕捉; 产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码。 中兴软件技术(南昌)培训中心从之前学习过的对象多态性可以清楚的知道,所有的子类实例可以全部使用父类接收,那么就可以利用向上转型的概念,让所有的异常对象都使用Exception接收。注意:在java中所有捕

12、获范围小的异常,必须放在捕获大的异常之前。否则程序在编译的时候就会出现错误提示。 中兴软件技术(南昌)培训中心public class ExceptionDemo06 public static void main(String args)System.out.println(* 计算开始 *) ;int i = 0 ;/ 定义整型变量int j = 0 ;/ 定义整型变量tryString str1 = args0 ;/ 接收第一个参数String str2 = args1 ;/ 接收第二个参数i = Integer.parseInt(str1) ;/ 将第一个参数由字符串变为整型j = I

13、nteger.parseInt(str2) ;/ 将第二个参数由字符串变为整型int temp = i / j ;/ 此处会产生异常System.out.println(两个数字相除结果: + temp) ;/ 此代码不再执行System.out.println(-) ;/ 此代码不再执行 catch(Exception e)/ 异常捕获范围大System.out.println(其他异常: + e) ;/ 处理异常System.out.println(* 计算结束 *) ;中兴软件技术(南昌)培训中心在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处

14、理异常,而交给方法的调用处进行处理 。 throws使用格式 public 返回值类型 方法名称(参数列表) throws throws 异常类异常类中兴软件技术(南昌)培训中心class Math public int div(int i,int j) throws Exception/ 本方法中可以不处理异常int temp = i / j ;/ 此处有可能产生异常return temp ;/ 返回计算结果public class ThrowsDemo01 public static void main(String args)Math m = new Math() ;/ 实例化Math对

15、象try / 因为有throws,不管是否有异常,都必须处理System.out.println(除法操作: + m.div(10, 2); catch (Exception e) e.printStackTrace();/ 打印异常中兴软件技术(南昌)培训中心class Math public int div(int i,int j) throws Exception / 本方法中可以不处理异常int temp = i / j ;/ 此处有可能产生异常return temp ;/ 返回计算结果public class ThrowsDemo02 / 本方法中的所有异常都可以不使用try.cat

16、hch处理的public static void main(String args) throws ExceptionMath m = new Math() ;/ 实例化Math对象System.out.println(除法操作: + m.div(10, 2);中兴软件技术(南昌)培训中心 与throws不同的是,可以直接使用throw抛出一个异常。抛出的时候直接抛出异常类的实例化对象即可。 中兴软件技术(南昌)培训中心public class ThrowDemo01 public static void main(String args)try throw new Exception(自己抛

17、出的异常!) ; / 抛出异常的实例化对象catch(Exception e) / 捕获异常System.out.println(e);中兴软件技术(南昌)培训中心class Math public int div(int i, int j) throws Exception / 方法可以不处理异常System.out.println(* 计算开始 *);int temp = 0;/ 声明整型变量try temp = i / j; / 如果产生异常,则执行catch catch (Exception e) / 捕获异常throw e; / 把异常交给被调用处 finally / 不管是否产生异

18、常都执行此代码System.out.println(* 计算结束 *);return temp; public class ThrowDemo02 public static void main(String args) Math m = new Math();/ 实例化Math对象try System.out.println(除法操作: + m.div(10, 0); catch (Exception e) / 进行异常的捕获 System.out.println(异常产生: + e); 中兴软件技术(南昌)培训中心中兴软件技术(南昌)培训中心public class RuntimeExce

19、ptionDemo01 public static void main(String args) String str = 123 ; / 定义一个由数字组成的字符串int temp = Integer.parseInt(str) ; / 将字符串变为int类型System.out.println(temp * temp);/ 计算乘方中兴软件技术(南昌)培训中心中兴软件技术(南昌)培训中心这两个类的区别如下:Exception在程序中是必须使用trycatch进行处理。 RuntimeException可以不使用trycatch进行处理,但是如果有异常产生,则异常将由JVM进行处理。 中兴软件技术(南昌)培训中心 在Java中已经提供了大量的异常类,但是这些异常类有些时候也很难满足开发者的要求,所以此时用户可以根据自己的需要定义自己的异常类,定义异常类,只需要继承Exception类即可。 中兴软件技术(南昌)培训中心class MyException extends Exception/ 自定义异常类,继承Exception类public MyException(String msg)/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论