一)Java错误异常的分类
如图,java中Throwable类的子类层次结构也就是java中错误异常分类的策略。首先是将错误异常细分为
错误(Error)和
异常(Exception)两大类。
错误指的是一个合理的应用程序不能截获的严重的问题。大多数都是反常的情况,比如内存溢出。而
异常则是指由于java的语法错误和语义错误而引起的程序异常,它基本是可以通过修改或优化你的代码来改正的。
对于异常,我们还进一步细分为
checked exception和
unchecked exception(runtime exception)。 其中
checked exception表示的是程序编译前就应该检查并避免出现的由语法错误而引起的异常或是引起的错误可以纠正,程序可以继续执行的异常,所以Java程序必须显示处理Checked异常(函数声明时显式表明异常名,或是try/catch此异常)。如果程序没有处理Checked异常,
该程序在编译时就会发生错误无法编译。如果使用IDE工具编写java的话,一旦出现checked exception,工具都会有相应的红色提示,所以只要使用IDE工具的话这类异常我们基本都能避免。而
runtime exception顾名思义是程序在运行过程中发生的异常,由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。
二)错误 Error
Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。
说白了,Error不是我们java程序员所需要担心的东西,它不是我们改写代码就能避免的。或者说这些错误都是程序以外的外部因素引起的。比如:OutOfMemoryError(内存溢出),VirtualMachineError(虚拟机down了或资源不足了)等等。
显然,类似这类错误的出现作为一个编写java代码的能咋办呢?应该是一个比较好的理由叫老板给咋加条内存吧 ^.^
三)异常 Exception
1)checked exception:
它又可称为编译异常(受查异常)。顾名思义,它基本是在编译阶段出现的那些异常。比如:ClassNotFoundException(未找到类),NoSuchMethodException(无此方法)等等。如果我们使用IDE编程,这些异常应该都会红色高显提示。此外我们自定义的异常经常也是此类异常,需要我们在函数声明时显式的写出会抛出的此类异常或用try/catch去处理此类异常。
2)runtime exception
运行异常(非受查异常),运行时抛出的异常。那程序怎么会在运行时抛出异常呢?ArrayIndexOutOfBoundsException(数组下标越界),ArithmeticException(算术条件异常。譬如:整数除零等),NullPointerException(空指针异常)等等。此类异常不用在函数声明时显式的写出或用try/catch去处理此类异常。因为此类异常往往导致程序崩坏无法恢复,我们对此只能做代码的修改而无法直接使程序继续运行。
四)总结
java的错误异常机制中,分为错误和异常两类,而异常又进一步分为编译异常和运行异常。对于错误,我们无能为力。对编译异常,一般使用IDE工具就能避免一部分。而另一部分需要显式声明此类异常或使用try/catch处理此类异常。对于运行异常的处理,强壮严密的代码可以减少运行异常出现的机会。而对于抛出的运行异常,我们需要做个决定:是任其抛出还是捕获处理...嗯,这确实是个问题!
- 大小: 10.8 KB
分享到:
相关推荐
Eclipse运行TOMCAT出现"a java exception has occurred"的解决办法 Eclipse是一款功能强大且广泛应用的集成开发环境(IDE),它支持多种编程语言,包括Java、C++、Python等。TOMCAT则是一款流行的Java Web服务器,...
### Java中的异常处理详解 #### 一、异常基础概述 在Java编程中,异常处理是一项重要的机制,用于处理运行过程中可能发生的错误情况。通过合理的异常处理,可以显著提高程序的健壮性和可用性。 ##### 1. 异常概念...
Java的异常类都继承自`java.lang.Throwable`,主要分为两种类型:Error和Exception。Error是系统级的错误,如虚拟机错误、内存不足等,一般开发者无法处理,而Exception是应用程序可以预见并处理的异常。 声明异常...
Java异常处理是编程中至关重要的一个部分,它用于在程序运行时处理错误和不寻常的情况。在Java中,异常是一种事件,它中断了程序的正常流程。Java异常处理提供了五种关键字来帮助开发者有效地管理异常:`try`, `...
在Java编程中,异常处理(Exception Handling)是确保程序健壮性的重要机制。它允许程序员在遇到错误情况时,能够优雅地处理问题而不是让程序突然崩溃。本项目中,"JAVA Exception Handling & UI Design" 涉及了如何...
异常通常由异常类表示,这些类继承自Java的`java.lang.Throwable`类,最常见的是`Exception`类及其子类。 异常分为两种类型:检查性异常(Checked Exceptions)和运行时异常(Runtime Exceptions)。检查性异常是...
### Java Exception 几种不适当的处理 在Java编程中,异常处理是确保代码健壮性和稳定性的关键环节。然而,在实际开发过程中,由于对异常处理的理解不足或是编码习惯的不当,常常会出现一些不适当的异常处理方式,...
本文将深入探讨标题和描述中提到的反编译工具及其与Java JDK版本的关联,以及如何解决"Java Exception has occurred"的问题。 首先,标题提到了“反编译工具两个版本,一个支持jdk1.7的”,这暗示了Java开发工具集...
当尝试执行除以零的操作时,Java会抛出`ArithmeticException`。这是通过使用异常处理机制来确保程序不会因这种错误而崩溃。例如: ```java try { int result = 10 / 0; // 这将引发ArithmeticException } catch ...
JD-GUI是使用C++开发的一款Java反编译工具,它是一个独立图形界面的Java源代码“.class”文件反编译工具。 JD-GUI是使用C++开发的一款Java反编译工具,它是一个独立图形界面的Java源代码“.class”文件反编译工具。
通过调用`Exception.getClass().getName()`方法,我们可以获取到异常的全限定类名,这有助于识别异常的具体类别。例如,如果异常是`NullPointerException`,`getClass().getName()`将返回`"java.lang....
标签中的“java exception”表明我们需要关注异常处理机制。在Java中,异常是通过`throw`关键字引发的,而`catch`关键字用于捕获和处理异常。`Book2`可能指的是项目的一部分或者版本号,但在这个上下文中没有具体...
Java异常 Exception类及其子类详解 Java异常Exception类及其子类是Java语言中异常处理的核心部分。异常是指程序在执行过程中出现的非正常情况,例如除数为零、数组索引越界、类型转换错误等。Java语言所有的异常都...
最新版jd-gui,适用于x86版本的JDK,JDK最低要求1.6,最高支持1.8
在Java编程语言中,异常处理是一项至关重要的机制,它允许程序员优雅地处理程序运行时可能出现的问题,从而确保程序的稳定性和可靠性。Java异常捕捉通过使用try、catch、finally和throw关键字来实现,这些关键字帮助...
java development part of exception
一个简单的Clojure库,该库允许在Clojure中动态定义Java Exception类。 动机 有时,您只需要可以直接捕获的快速Exception类。 defexception使用Java字节码动态创建直接从clojure.lang.ExceptionInfo继承的Java类。 ...
Javaexception je2 = new Javaexception("С", 33); System.out.println(je2.toString()); System.out.println(je1.getName() + "" + je2.getName() + "" + je1.olderThen(je2) + ""); } catch (MyException e) ...
Java程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: Java heap space"是一个常见的问题,通常发生在程序试图分配超过堆内存限制的空间时。这个错误表明Java虚拟机(JVM...
java Exception中Throwable和Exception之间的区别