JAVA异常机制
一、基本概念
在Java中这种在程序中运行时可能出现的一些错误称为异常。Java处理异常时,如果某个方法抛出异常,既可以在当前方法中进行捕捉,然后处理该异常,也可以将异常向上抛出,由方法调用者来处理。异常产生后,如果不做任何处理,程序就会被终止。
二、异常捕获和处理
1、Java异常处理涉及到五个关键字,分别是:try、catch、finally、throw、throws。
Try:可能发生异常的Java语句
Catch:激发被捕获的异常
finally:方法返回前总要执行的代码.
throw:用于抛出一个异常对象
throws:在声明方法时,用于指定该方法可能抛出的异常。
2、try、catch、finally三个语句块应注意的问题(笔试重点)
第一、try、catch、finally三个语句块均不能单独使用,三者可以组成 try...catch...finally、try...catch、try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个。
第二、try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。
第三、多个catch块时候,只会匹配其中一个异常类并执行catch块代码,而不会再执行别的catch块,并且匹配catch语句的顺序是由上到下。
第四、无论程序是否有异常,并且无论之间try-catch是否顺利执行完毕,都会执行finally语句。在以下特殊情况下,finally块不会执行:在finally语句块中发生异常;在前面代码中使用了System.exit()退出程序;程序所在线程死亡;关闭cpu。
第五、当程序执行try块,catch块时遇到return语句或者throw语句,这两个语句都会导致该方法立即结束,所以系统并不会立即执行这两个语句,而是去寻找该异常处理流程中的finally块,如果没有finally块,程序立即执行return语句或者throw语句,方法终止。如果有finally块,系统立即开始执行finally块,只有当finally块执行完成后,系统才会再次跳回来执行try块、catch块里的return或throw语句,如果finally块里也使用了return或throw等导致方法终止的语句,则finally块已经终止了方法,不用再跳回去执行try块、catch块里的任何代码了。
3、throw与throws
1、throws出现在方法函数头;而throw出现在函数体。throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
三、异常结构
Throwable类派生了两个子类。Error类用来描述Java运行系统中的内部错误以及资源耗尽的错误;Exception类为非致命性类,可以通过捕捉处理使程序继续执行。Exception类根据错误发生的原因分为运行时异常和检查异常。如图所示。
1、检查异常
检查异常是RuntimeException以外的异常(IOException、SQLException等),必须显示的地处理否则无法编译通过。处理方法有两种,一是用try...catch捕捉异常,二是使用throws声明抛出该异常。
2、运行时异常
运行时异常的特点是Java编译器不会检查它,程序中可以选择捕获处理,也可以不处理。
3、错误
Error(错误):是程序无法处理的错误,表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。
四、自定义异常
自定义异常只需编写一个类继承Exception类(Throwable及其子类均可)即可。
<!--EndFragment-->
相关推荐
Java编程语言作为软件开发领域的主流语言之一,其面试题库涵盖了广泛的领域,包括基础语法、面向对象编程、集合框架、多线程、网络编程、异常处理、IO流、设计模式等。以下是一些核心知识点的详细说明: 1. **基础...
### JAVA面试题详解 #### 1. 异常处理机制的简单原理和应用 异常处理是Java编程语言中的一项重要特性,它用于检测程序运行时出现的问题并采取适当的措施。当程序违反了Java的语义规则时,Java虚拟机会抛出一个异常...
同时,还会包括异常处理和文件I/O。 2. **面向对象编程**:深入理解面向对象的三大特性——封装、继承和多态,以及接口和抽象类的概念。此外,可能会讨论访问修饰符(public、private、protected、默认)以及构造器...
Java面试宝典是Java程序员求职面试的重要参考资料,它涵盖了Java编程语言的核心概念、高级特性、设计模式、并发处理、框架应用、数据库交互等多个方面。以下将详细解析这些关键知识点: 1. **Java基础**:面试中,...
3. **Java面试重点** - 垃圾回收与内存管理:理解JVM内存模型,包括堆、栈、方法区、本地方法栈等,以及不同垃圾回收算法。 - 数据结构与算法:面试中常考,包括排序、查找算法,以及数据结构的选择和优化。 - ...
这份"【面试必备】JAVA 最常见面试题全解析 附 PDF"文档,正是为准备Java面试的开发者量身定制的资源,涵盖了Java的基础到高级知识点,旨在帮助你全面理解和掌握Java技术。 一、基础篇 1. Java语法:包括变量、数据...
Java面试必备必知必会,这是每个Java开发者在求职或者职业发展中都需要面对的主题。Java面试通常涵盖以下几个核心领域:Java基础、集合框架、多线程并发以及虚拟机(JVM)知识。以下将对这些关键知识点进行详细阐述...
Java面试宝典2017版是一份集大成的面试资源,专为准备Java相关职位面试的求职者量身打造。这份文档旨在帮助求职者系统性地复习和掌握Java编程语言的关键知识点,以应对各类面试挑战。以下将对这份资料中的主要知识点...
### 初级Java面试题集锦(面试必备) 在准备Java相关的面试时,掌握基础知识尤为重要。本文将基于“初级Java面试题集锦(面试必备)”这一主题进行深入解析,帮助求职者更好地理解和掌握Java的基础知识及面试中常见...
"Java面试必备208题.zip"这个压缩包文件提供了全面的面试准备资料,其中的"Java面试必备208题.pdf"涵盖了Java语言的各个方面,包括基础概念、面向对象、集合框架、多线程、IO流、网络编程、异常处理、JVM内存模型...
Java面试必备宝典是针对Java开发者的一份重要学习资源,主要涵盖了2015届面试的常见问题和重点知识。这份资料集可以帮助求职者全面了解并掌握Java编程语言的关键概念和技术,以提升在面试中的竞争力。 一、Java基础...
- 异常处理:熟悉try-catch-finally语句块,异常类型,以及如何自定义异常。 - 多线程:掌握线程的创建方式(Thread类和Runnable接口),同步机制(synchronized关键字,wait()和notify()方法)以及线程池。 2. *...
这份名为“【Java面试资料】-1000道 互联网Java架构师面试题 面试必备神器”的压缩包,显然是一份针对Java架构师面试的全面学习资源。其中包含的PDF文档很可能是精心整理的面试问题集,旨在帮助准备Java架构师职位...
"java面试题目.doc"和"java面试题目(53页).doc"进一步补充了面试题库,可能包含了一些特定场景的应用问题,如Web开发、大数据处理、微服务架构等,这些都是现代Java开发者必备的知识。 最后,"Core Javaceshiti.doc...
这个压缩包"java面试必备资源"显然是为准备Java面试者提供的一份宝贵资料。下面将详细解析可能包含的知识点,帮助你全面理解和掌握Java面试的核心内容。 1. **基础语法**:面试通常会从Java的基础语法开始,如数据...
在准备Java面试时,了解和掌握一系列核心知识点是至关重要的。以下是一些基于标题和描述中的关键领域,如MyBatis、Spring、Redis、多线程、网络编程以及面试题库的重要知识点: 1. **Java基础**:Java是面试的基础...
此外,Java的健壮性和安全性也是其重要特点,强类型检查、异常处理和自动垃圾回收机制有助于预防错误,保证程序稳定运行。 面试中,Java基础部分会涵盖这些知识点,例如类、对象、接口、包的概念,以及控制流、异常...
14. **算法与数据结构**:虽然Java面试不一定会深入到算法细节,但基础的数据结构(如链表、树、图、队列、堆)和基础算法(如排序、查找)的掌握可以提高解决问题的能力。 15. **编程实践**:具备良好的编码习惯,...
虽然Java面试中涉及C++不多,但理解C++的面向对象特性、指针、内存管理、模板等也是加分项。 十、Weblogic及其他: Weblogic是企业级应用服务器,了解其部署、配置、集群等知识,同时可能考察其他服务器如Tomcat、...