`

Java学习系列(九)Java面向对象之异常机制详解

 
阅读更多

异常处理机制用来保障我们的程序更加健壮,无论用户怎么操作,都能保证我们的程序都能正常应对的一种处理机制。

一般格式如下:
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面向对象编程实例详解

    "Java面向对象编程实例详解2.txt"和"Java面向对象编程实例详解.txt"可能包含了详细的讲解和示例代码,涵盖了类的创建、对象的实例化、访问控制、构造函数、抽象类和接口、异常处理、集合框架等方面的知识。...

    Java面向对象程序设计耿祥义版课件

    二、Java面向对象特性详解 1. 抽象:抽象是将共同特征抽取出来形成类的过程,Java通过抽象类和接口实现抽象。 2. 构造器:构造器用于初始化新创建的对象,Java中的构造器与类同名且无返回值。 3. 访问控制修饰符:...

    java面向对象基础、高级pdf讲义

    Java面向对象基础与高级知识点详解 Java是一种广泛使用的面向对象编程语言,它的设计哲学是“一切皆对象”。本讲义将全面深入地介绍Java面向对象的基础概念和高级特性,帮助开发者从初学者到精通者逐步提升技能。 ...

    Java基础教程完整版

    Java学习系列(九):Java面向对象之异常机制详解 本章节主要讲解Java的异常机制,包括try语句、catch语句、finally语句、throw语句、throws语句等。 Java学习系列(十):Java面向对象之I/O流(上) 本章节主要...

    Java面向对象之继承练习题.doc

    【Java面向对象之继承练习题】的解析与详解: 1. **类的继承**:在Java中,继承是面向对象编程的重要特性,允许一个类(子类)继承另一个类(父类)的属性和方法。例如,我们可以创建一个`Music`类作为其他音乐相关...

    JAVA面向对象基础

    ### JAVA面向对象基础知识点详解 #### 一、面向对象编程语言的发展史 面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,其核心在于将现实世界中的对象及其属性和行为映射到软件系统中...

    Java垃圾回收机制详解和调优.doc

    Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收...

    java(面向对象编程)课件

    【Java面向对象编程课件详解】 Java是一种广泛使用的高级编程语言,以其面向对象特性而闻名。面向对象编程(Object-Oriented Programming,OOP)是Java的核心,它将现实世界中的概念映射到代码中,使得程序设计更加...

    《使用java面向对象编程》大纲

    通过上述总结,可以清晰地看到Java面向对象编程的核心知识点,包括Java语言基础、面向对象的基本概念和实现、异常处理等。这些知识点构成了Java编程的基础框架,对于初学者理解和掌握Java面向对象编程至关重要。

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    浅析JAVA异常处理机制.pdf

    Java中的异常处理机制基于面向对象的思想构建了一套完整的体系,主要包括以下几个方面: 1. **Throwable类**:这是所有可以通过`throw`抛出或`catch`捕获的错误的基础类。 - **Error类**:用于表示编译时错误和...

    java面向对象基础练习

    根据提供的文件信息,我们可以归纳和解析出多个与Java面向对象编程相关的知识点,下面将逐一进行详细阐述。 ### 1. Switch 语句的理解 - **题目解析**:给出的示例代码展示了如何使用 `switch` 语句进行条件判断。...

    Java2面向对象程序设计 课后习题详解

    《Java2面向对象程序设计》一书的课后习题详解旨在帮助读者深入理解和掌握Java编程语言的核心概念,特别是面向对象的设计原则和实践。书中的习题涵盖了从Java语言的历史、基本语法到高级特性等多个方面,以下是对...

    java了解面向对象与类 详解 java实例20

    在这个“java了解面向对象与类 详解 java实例20”的主题中,我们将深入探讨面向对象编程的基本概念,以及如何在Java中实现这些概念。 首先,我们需要理解什么是面向对象编程(Object-Oriented Programming,OOP)。...

    java核心基础技术卷,(基础语法,面向对象,异常,泛型,IO,枚举,反射机制,集合,内部类,)

    "Java核心基础技术卷详解" ...Java 核心基础技术卷涉及到 Java 的基础语法、面向对象、异常、泛型、IO、枚举、反射机制、集合、内部类等多方面的知识点,为 Java 开发者提供了一个全面的学习指南。

    朱福喜面向对象与Java程序设计课后答案详解

    面向对象与Java程序设计是软件开发领域中的核心概念,朱福喜的著作深入浅出地讲解了这些主题,为开发者提供了宝贵的资源。本教程重点围绕Java语言和面向对象编程的基本概念,结合课后习题答案,帮助读者巩固理解并...

    浅谈java面向对象和引用

    ### 浅谈Java面向对象与引用 在Java学习过程中,对于面向对象的理解和引用机制的掌握是至关重要的。本文将围绕这两个概念进行深入探讨,并针对初学者常见的疑惑点进行解答。 #### Java面向对象基础 Java是一种...

    面向对象原理与Java实践课程实验-对象和类

    ### 面向对象原理与Java实践课程实验-对象和类 #### 实验目的与要求 本实验的主要目的是让学生深入理解面向对象编程的核心概念之一——类与对象,并通过实际编程来掌握这些概念的具体应用。实验重点包括: 1. **...

    java面向对象选择题题库

    ### Java面向对象选择题知识点详解 #### 一、Java源文件命名规则 - **选项解析**: - **错误选项**:源文件名没有限制、必须使用`.class`扩展名。 - **正确选项**:Java 源文件的名称必须与其中定义的公共类名...

Global site tag (gtag.js) - Google Analytics