运行时异常和一般异常的区别[通俗易懂]

运行时异常和一般异常的区别[通俗易懂]Java提供了两类主要的异常:runtimeexception和checkedexception。checked异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。  但是另外一种异常:runtimeexc

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用
Java提供了两类主要的异常:runtime exception和checked exception。checked 异常也就是我们经常遇到的IO

异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,

面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。

    但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟

机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见

的异常之一。

    出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就

由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序

抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块

处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要

么是线程中止,要么是主程序终止。

    如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应

该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。在这个场景这样处理可能是

一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,遇到了一些错误,如果退出程序比较好,

这时你就可以不太理会运行时异常,或者是通过对异常的处理显式的控制程序退出。

    异常:   在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种 方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它。Java中使用异常类来表示异常,不同的异常类代表了不同的异常。但是在 Java中所有的异常都有一个基类,叫做Exception。

    错误:它指的是一个合理的应用程序不能截获的严重的问题。大多数都是反常的情况。”,错误是VM的一个故障(虽然它可以是任何系统级的服务)。所以,错误是很难处理的,一般的开发人员(当然不是你)是无法处理这些错误的。比如内存溢出;

    和异常一样,在Java中用错误类来表示错误,不同的错误类代表了不同的错误。

    但是在Java中所有的错误都有一个基类,叫做Error。

    综上,我们可以知道异常和错误最本质的区别就是异常能被开发人员处理而错误时系统本来自带的,一般无法处理也不需要我们程序员来处理。

    异常的分类

    在Java中异常分为两大类:编译异常和运行异常

    运行异常即是RuntimeException;其余的全部为编译异常

    JAVA中的异常体系

    在Java中异常Exception和错误Error有个共同的父类Throwable.

三、runtimeException几个子类的具体介绍
    1、 java.lang.ArrayIndexOutOfBoundsException
    数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
    2、java.lang.ArithmeticException
    算术条件异常。譬如:整数除零等。
    3、java.lang.NullPointerException
    空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等
    4、java.lang.ClassNotFoundException
    找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188161.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 160亿数据点图表控件LightningChart振动分析可以检测什么?

    160亿数据点图表控件LightningChart振动分析可以检测什么?LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学,工程,医学,航空,贸易,能源和其他领域的体绘制功能。点击下载LightningChart.NET最新试用版当您想到振动分析时,您会想到什么?它正在成为结构工程中一种非常常见的识别方法,用于识别潜在的结构完整性问题,例如隐藏的物体或空隙。这是一种识别机械问题的

    2022年10月15日
  • visdom API 方便使用查阅

    visdom API 方便使用查阅代码Structure如下:1、基础Visdom提供以下基本的可视化功能:vis.image:图片 vis.images:图像列表 vis.text:任意的HTML vis.video:视频 vis.svg:SVG对象 vis.save:序列化状态服务器端2、绘制我们已经封装了几种常见的绘图类型,以便轻松创建基本可视化。这些可视化由Plotly提供支持。目前支持…

  • yum安装telnet命令_centos 安装telnet

    yum安装telnet命令_centos 安装telnet简介Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登…

  • java中获取绝对值的方法_Java完美判断绝对值的两种方法 | 彬菌「建议收藏」

    版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创!恰饭广告if-else语句判断:importjava.util.Scanner;publicclassAbsoluteValue{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);//声明扫描仪变量System.ou…

  • 【2021-01-05】JS逆向之B站模拟登入(含极验点选)「建议收藏」

    【2021-01-05】JS逆向之B站模拟登入(含极验点选)「建议收藏」文章目录前言一、预告无感滑块点选前言搞了不到两个星期,终于把某验验证码(无感、滑块、点选)全部给啃下来了,过程还是挺艰辛的,这篇不讲方法,之后会出一系列的方法,感兴趣的可以提前关注下~一、预告无感滑块点选…

  • Win10文件资源管理器右键卡死「建议收藏」

    Win10文件资源管理器右键卡死「建议收藏」Windows10文件资源管理器操作变慢Windows10自动更新太烦人了,尝试了很多中方法也没禁用成功。昨天自动更新以后,今天使用Windows10,发现文件资源管理器打开的时候慢了很多,打开之后里面的文件夹、文件图标要好久才能显示正常。然后想在文件资源管理器里右键某个文件之后,文件资源管理器就卡死了。此时系统其他部分,如网页浏览器,其他功能软件运行正常。这样确定不是系统卡死,而只是文件资源管……

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号