热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javaexception源码_Java异常之Error和Exception

简单了解Java异常1、实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求;你的程序

简单了解 Java 异常

1、实际工作中,遇到的情况不可能是非常完美的。

比如:你写的某个模块,用户输入不一定符合你的要求;

你的程序要打开某个文件,这个文件可能不存在或者文件格式不对;

你要读取数据库的数据,数据可能是空的等;

我们的程序在跑着,内存或硬盘可能满了,等等等等。

2、软件程序在运行过程中,可能遇到刚刚提到的这些异常问题,我们叫异常,英文是 Exception,意思是例外。

这些例外情况,或者叫异常,怎么让我们写的程序做出合理的处理,而不至于程序奔溃,那我们就需要捕获异常。

3、异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。

异常可能发生在程序运行期间,它影响了正常的程序执行流程。

要理解 Java 异常处理是如何工作的,需要掌握以下三种类型的异常

1、检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。

例如要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。

2、运行时异常:运行是异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

3、错误 ERROR:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。

例如,当栈溢出时,一个错误就发生了,它们在编译时也检查不到的。

异常体系结构

1、Java 把异常当作对象来处理,并定义一个基类 java.lang.Throwable 作为所有异常的超类。

2、在 Java API 中已经定义了许多异常类,这些异常类分为两大类,错误 Error 和异常 Exception。

68439.html

Error

1、Error 类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。

2、Java 虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,

将出现 OutOfMemoryError。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。

3、还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。

这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状。

Exception

1、在 Exception 分支中有一个重要的子类 RuntimeException(运行时异常)

ArrayIndexOutOfBoundsException(数组下标越界)

NullPointerException(空指针异常)

ArithmeticException(算数异常)

MissingResourceException(丢失资源)

ClassNotFoundException(找不到类)等异常,这些异常是不检查异常,程序中可以选择捕获异常,也可以不处理。

2、这些异常一般都是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

3、Error 和 Exception 的区别:Error 通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,Java 的虚拟机(JVM)一般会选择终止线程;Exception 通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。

packageexception;#zs#** 一、简单了解 Java 异常:

* 1、实际工作中,遇到的情况不可能是非常完美的。

* 比如:你写的某个模块,用户输入不一定符合你的要求;

* 你的程序要打开某个文件,这个文件可能不存在或者文件格式不对;

* 你要读取数据库的数据,数据可能是空的等;

* 我们的程序在跑着,内存或硬盘可能满了,等等等等。

* 2、软件程序在运行过程中,可能遇到刚刚提到的这些异常问题,我们叫异常,英文是 Exception,意思是例外。

* 这些例外情况,或者叫异常,怎么让我们写的程序做出合理的处理,而不至于程序奔溃,那我们就需要捕获异常。

* 3、异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。

* 异常可能发生在程序运行期间,它影响了正常的程序执行流程。

*

* 二、要理解 Java 异常处理是如何工作的,需要掌握以下三种类型的异常:

* 1、检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。

* 例如要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。

* 2、运行时异常:运行是异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

* 3、错误 ERROR:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。

* 例如,当栈溢出时,一个错误就发生了,它们在编译时也检查不到的。

*

* 三、异常体系结构

* 1、Java 把异常当作对象来处理,并定义一个基类 java.lang.Throwable 作为所有异常的超类。

* 2、在 Java API 中已经定义了许多异常类,这些异常类分为两大类,错误 Error 和异常 Exception。

*

* 四、Error

* 1、Error 类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。

* 2、Java 虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,

* 将出现 OutOfMemoryError。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。

* 3、还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。

* 这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。

*

* 五、Exception

* 1、在 Exception 分支中有一个重要的子类 RuntimeException(运行时异常)

* ArrayIndexOutOfBoundsException(数组下标越界)

* NullPointerException(空指针异常)

* ArithmeticException(算数异常)

* MissingResourceException(丢失资源)

* ClassNotFoundException(找不到类)等异常,这些异常是不检查异常,程序中可以选择捕获异常,也可以不处理。

* 2、这些异常一般都是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

* 3、Error 和 Exception 的区别:Error 通常是灾难性的致命的错误,是程序无法控制和处理的,

* 当出现这些异常时,Java 的虚拟机(JVM)一般会选择终止线程;

* Exception 通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。#fzs#

public classDemo1 {public static voidmain(String[] args) {//new 一个匿名内部类,调用 a 方法

new Demo1().a(); //a 调 b,b 调 a,一直无限循环,报异常(Error)

}//a 方法调用 b 方法

public voida(){

b();

}//b 方法调用 a 方法

public voidb() {

a();

}

}



推荐阅读
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了在Java中gt、gtgt、gtgtgt和lt之间的区别。通过解释符号的含义和使用例子,帮助读者理解这些符号在二进制表示和移位操作中的作用。同时,文章还提到了负数的补码表示和移位操作的限制。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
author-avatar
1021365712_3a478e
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有