运行时异常:
RuntimeException类及其子类都被称为运行时异常,它是java编译器事先不可预知的异常,是UncheckedException,不需要处理(try捕获 or throws声明抛出)。
这种异常的特点是Java编译器不去检查它,也就是说,当程序中可能出现RuntimeException异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过,这种异常可以通过改进代码实现来避免。
常见的RuntimeException有:NullPointerException、ClassCastException、ArithmeticException、IndexOutOfBoundsException、UnsupportedOperationException等
受检查异常:
除了RuntimeException类及其子类外,其他的Exception类及其子类都属于受检查异常,这种异常的特点是要么用try...catch捕获处理,要么用throws语句声明抛出,否则编译不会通过。
检查时异常(CheckedException)是jvm判断可能出现的异常,就是说编译器帮你检查出来了可能出现的异常,此时你程序未执行,但是有可能抛出这个异常,所以提醒你必须要处理(try捕获 or throws声明抛出)。
常见的受检查异常有:IOException、SQLException等
方法中不try掉throw语句的前提下:
1、在方法内throw抛出RuntimeException或其子类异常时,方法可以不声明throws
2、在方法内throw抛出受检查异常时,方法必须声明throws
例:
public void testRuntimeExceptionThrow(String str){
if(str == null){
throw new NullPointerException("str为空");
}
}
public void testCheckedExceptionThrow(String filePath) throws IOException {
if(filePath == null){
throw new IOException("filePath为空");
}
}
对异常的处理:
对于运行时异常,最好不要用try...catch来捕获处理,而是在程序开发调试阶段,尽量去避免这种异常。一旦发现该异常,正确的做法就会改进程序设计的代码和实现方式,修改程序中的错误,从而避免这种异常。
对于受检查异常,老老实实去按照异常处理的方法去处理: 要么用try...catch捕获并解决,要么用throws声明抛出!
异常转型:
异常转型就是捕获到异常后,将异常以新的类型的异常再抛出,这样做一般为了异常的信息更直观!比如:
//SysRunException为自定义异常,继承于RuntimeException
public void test() {
try{
...
}catch(IOException e){
...
throw new SysRunException(msg);//msg为更直观的信息
}finally{
...
}
}
finally语句块会在方法执行return之前执行.
finally语句唯一不被执行的情况是方法执行了System.exit()方法。System.exit()的作用是终止当前正在运行的 Java虚拟机。
finally语句块中不能通过给变量赋新值来改变return的返回值,也建议不要在finally块中使用return语句,没有意义还容易导致错误。
throw语句后不允许有紧跟其他语句,因为这些没有机会执行。
如果一个方法调用了另外一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。
throw和throws关键字的区别:
throw用来抛出一个异常,在方法体内。语法格式为:throw 异常对象。
throws用来声明方法可能会抛出什么异常,在方法名后,语法格式为:throws 异常类型1,异常类型2...异常类型n。
参考:
http://lavasoft.blog.51cto.com/62575/18920
分享到:
相关推荐
Java 异常处理习题 Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出...
Java 异常详解 Java 异常是指在程序运行中出现的违背指定正常流向的事件。异常可以分为两大类:-checked 异常和 unchecked 异常。Checked 异常必须在编译时捕捉并处理,而 unchecked 异常可以在编译时忽略,但是在...
Java 异常机制的基础知识包括异常的基础概念、异常的分类、异常的对象、异常的来源、异常的处理等几个方面。 一、Java 异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以...
本文将从 Java 异常的基本概念和语法开始,讲述 Java 异常处理的基本知识,分析 Java 异常体系结构,对比 Spring 的异常处理框架,阐述异常处理的基本原则,并提出了自己处理一个大型应用系统异常的思想,并通过设计...
Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时出现的错误情况,确保程序的稳定性和可靠性。这份“Java异常学习资料”包含了丰富的资源,帮助你深入理解Java异常机制,提升代码质量...
java异常练习题,北大青鸟学士后课后练习,主要是异常处理的小测验
Java异常处理是编程中至关重要的一个环节,它关乎程序的健壮性和稳定性。在Java中,异常(Exception)被用来表示程序运行时发生的错误或不正常情况。异常并不等同于错误,它是程序设计的一部分,允许我们优雅地处理...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误情况时能够优雅地进行错误恢复或者至少提供有用的错误信息。Java异常是程序在运行时遇到的问题,例如数组越界、空指针异常、文件未找到等,这些问题...
Java异常处理是编程中至关重要的一个环节,它允许开发者优雅地处理程序运行时可能出现的错误,确保程序的健壮性和稳定性。Java中的异常处理机制基于一个独特的概念——异常(Exception),这是一种表示程序运行中...
Java异常体系结构是Java语言的重要组成部分,它负责处理程序执行过程中出现的错误情况。在Java中,异常由Throwable类及其子类构成。Throwable是所有异常的顶层父类,它有两个直接子类:Error和Exception。Error类...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。本篇文章将深入探讨Java异常处理的概念、机制以及如何通过代码实例进行有效的异常管理。 Java异常处理的核心...
这个主题,"Java异常处理体系",涉及到Java如何优雅地处理程序运行时的异常,确保程序的健壮性和稳定性。这篇博文链接(已提供但无法直接访问)可能详细解释了Java异常处理的基本概念、机制以及最佳实践。 Java异常...
### 浅析JAVA异常处理机制 #### 一、Java异常处理机制概述 异常处理是Java语言中的一个重要机制,它能够确保程序在遇到不可预料的情况时仍能维持稳定运行。异常处理主要包括三个方面:捕获异常、控制程序流程以及...
Java异常处理是编程过程中的重要环节,它有助于增强程序的健壮性和稳定性。在这个全面的教程中,我们将深入探讨Java异常的基本概念、分类、处理机制以及最佳实践。 首先,Java异常是程序运行时发生的错误,它中断了...
Java异常处理设计是Java编程中一个至关重要的环节,它直接影响到程序的稳定性和可维护性。在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时...
这篇博文“Java异常框架设计”可能探讨了如何有效地利用Java的异常处理机制来构建可靠的系统。在这个讨论中,我们将深入理解Java异常的基本概念、异常分类、以及如何通过良好的框架设计提升代码的可读性和可维护性。...
在给定的“Java异常分装实例”中,我们可以学习如何创建自定义异常类、抛出和捕获异常,以及如何利用Java的异常层次结构。`exception_test`文件可能包含了一个或多个示例代码,用于演示这些概念。 首先,创建自定义...
Java异常处理主要涉及以下几个核心概念: 1. **异常(Exception)**:异常是程序在执行过程中遇到的非正常情况,它中断了正常的执行流程。Java中的异常以对象的形式存在,这些对象通常是特定异常类的实例。异常分为...