异常处理机制用来保障我们的程序更加健壮,无论用户怎么操作,都能保证我们的程序都能正常应对的一种处理机制。
一般格式如下:
try{ // 尝试让它执行业务处理,如果可以执行完成,就代表一切正常。
// 业务处理
}catch(异常1 e1){
// 进行异常1处理
}catch(异常2 e2){
// 进行异常2处理
}
举例说明1:
public class Test { public static void main(String[] args) { try { Double d1 = Double.parseDouble(args[0]); Double d2 = Double.parseDouble(args[1]); System.out.println("d1+d2=" + (d1 + d2)); } catch (ArrayIndexOutOfBoundsException e1) { System.out.println("请输入两个数字!"); } catch (NumberFormatException e2) { System.out.println("输入的必须是数字!"); } } }
Java异常机制的处理流程:
出现异常时,系统会自动生成一个异常对象ex,然后由catch(异常类 e1) ex instanceof 异常类 判断是否为true,为true时传给catch块后的形参,并执行catch块中的代码。对于多个catch块捕捉异常,应该是先捕捉小(子类)的异常,再捕捉大(父类)的异常。通常发生异常时应从第一个自己写的程序位置开始查找并排错。【注意】对于一个异常,最多只有一个catch块捕捉到异常。
异常体系图:
异常处理的完整语法格式:
try{
// 业务处理
}catch(异常 ex){ //0~N个
// 进行异常1处理
}finally{ // 0~1个
}
注意:try不能独立存在,也就是说catch块和finally块必须有一个。
finally --通常用于回收(关闭0资源,JVM会保证【finally块总会得到执行 --不管有无return语句】,但如果遇到System.exit(0);(用于退出JVM)就会阻止finally语句的执行。
异常的分类。
checked异常:没有完善错误处理的代码,不会得到执行的机会。--编译器会强制检查。
runtime异常:运行时异常。
checked异常可以更好地保证我们一定会对其进行异常处理,但checked也给编程带来繁琐:要么用throws声明抛出异常,要么显式用catch来捕捉。
异常转译
/** * @author lhy * @desription 自定义异常 */ class MyException extends RuntimeException { public MyException() { } public MyException(String msg) { super(msg); } public MyException(String detailMessage, Throwable throwable) { super(detailMessage, throwable); } } public class Test { public static void main(String[] args) { test(args); } public static void test(String[] args) { try { Integer num1 = Integer.parseInt(args[0]); Integer num2 = Integer.parseInt(args[1]); System.out.println(num1 / num2); } // 先用catch來捕捉原有的異常,再用throw拋出一个自定义异常对象; // 这种做法也称为“异常转译” catch (ArrayIndexOutOfBoundsException ae) { // 数组下标越界异常 throw new MyException("请输入两个数字"); } catch (NumberFormatException ne) { // 数字格式异常 throw new MyException("必须输入数字"); } catch (ArithmeticException et) { // 算术异常 throw new MyException("被除数不能为0"); } finally { System.out.println("finally块总会得到执行"); } } }
【注意】(catch)捕捉的异常的范围一定要比抛出的异常范围大。
throws和throw的区别:
A。throws只能在方法签名中用,方法已经注意到了这几个异常,但目前不想处理该异常。
B。throw就是一条普通的语句,throw后紧跟【一个异常实例】。
结束语:今天内容比较简单,所以写的不是很多。明天开始学习IO。
相关推荐
Java面向对象编程实例详解1 Java面向对象编程实例详解2
Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收...
java了解面向对象与类 详解 java实例20
000000_【课程介绍 —— 写在前面的话】_Java学习概述笔记.pdf 010101_【第1章:JAVA概述及开发环境搭建】_JAVA发展概述笔记.pdf 010102_【第1章:JAVA概述及开发环境搭建】_Java开发环境搭建笔记.pdf 010201_【第2...
Java经典,详细的解答课后问题! 朱福喜编著,是纯粹的开发人员必备的面向对象设计书籍。
动物乐园项目源代码,题目及类图合代码详解 java基础 面向对象 多态 抽象类 接口 压缩包内含实验文档,源代码项目包及PPT
Java语言具有面向对象、与平台无关、简单稳定、支持多线程等特点,已经成为当下最重要的网络编程语言之一。本书分为12个章节,主要包括Java语言概述 、基本语法规则、面向对象核心技术、数组和集合、异常处理、文件...
Java2面向对象程序设计一书的课后习题详细解答,十分详细
面向对象 ppt。关于java对面向对象的概述和详解ppt。。。。。。。。
Java是面向对象的语言,所谓“万事万物皆对象”就是Java是基于对象来设计程序的,没有对象程序就无法运行(8大基本类型除外),那么对象是如何创建的?在内存中又是怎么分配的呢? 正文 一、对象的创建方式 在Java中...
面向对象基础 Java基本数据类型 string和包装类 final关键字特性 Java类和包 抽象类和接口 代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 ...
本人学习java新手,自学时在网上找到的资源自我感觉很不错,希望对大家有帮助
本资料开源与IT开发者 论坛,由创建者:iyangxin 编写,本人只做了整理,如有疑惑请联系原作者。...面向对象 递归 多线程 GUI 反射机制详解 正则表达式 日期处理 字符串 集合 异常处理 IO 流程控制 继承 JAVA高手进阶
《Java程序设计》共分12章,内容包括Java语言概述、面向对象编程初步、Java的基本语法、类库与数组、面向对象编程深入、图形用户界面编程、异常处理和输入输出,以及多线程编程等内容。 本书讲解Java程序设计知识...
使用刚入门相深度理解面向对象思想的小白
Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结。 2、分类文档 JVM虚拟机 JVM特点,结构与执行周期 JVM类加载机制 JVM运行时区数据 JVM执行引擎和垃圾回收 基础语法 理解Java中对象基础Object类 ...
面向对象详解,PPT适合新手学习,希望可以帮助你
这个简单的图书管理系统演示了Java面向对象编程的各个概念的应用。能够系统的学习并实践面向对象的思想。
面向对象软件工程(使用UML、模式与JAVA)第三版的课后习题答案,覆盖了大部分题目的详解,值得拥有。
Java应用开发详解视频教程(22集)资源目录:【】第00章:JAVA课堂序章【】第01章:JAVA概述及开发环境搭建【】第02章:简单Java程序【】第03章:Java基础程序设计【】第04章:数组与方法【】第05章:面向对象基础...