Exception 和Error异常大部分人都犯过的错。
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索【程序职场】关注这个执着的职场程序员。
我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验。
1,简介
Exception 和Error 都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本类型。
两者有什么区别呢:
Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。(我们常做的操作就是捕获这种异常或者抛出这种异常)
Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不可处理或者不可恢复的情况。所以这种异常不可能抓取到,比如OutOfMemoryError、NoClassDefFoundError等。(这种会导致我们的程序
crash,直接导致项目的崩溃)
2,子类
我们来看看这两个异常都有哪些子类呢?
1,Exception
(1)RuntimeException(2)NullPointerException(3)ClassCaseException(4)SecurityException(5)IOException
2,Error
(1)OutofMemoryError(2)StackOverFlowError(3)VirtualMachineError(4)LinkageError(5)NoClasDeffoundError(6)ExceptionInInitializerError
我们上面知道了两个都包含了哪些子类,同事我们刚开始的时候也说了
Exception 和Error 都是继承了Throwable类
3,Throwable
我们必须要理解 Java 语言中操作 Throwable 的元素并且知道怎么使用。
掌握最基本的语法是必须的,如 try-catch-finally 块,throw、throws 关键字等。
还要懂得如何处理典型场景。
throw是存在于方法的代码块中,而throws是存在于方法外围,一般是在方法名后边 throws XXXException;
我们先来看看 的使用try-catch-finally,一般我们害怕出现异常都是直接 try-catch-finally 添加,但是这种异常捕获,是有先后顺序的,下面我们通过两个实例来说说明
try{retrun 3;}catch{e.printStackTrace();}finally{return 4;}
//上边情况下,实际返回的是4;
try{int x = 3;retrun x;}catch{e.printStackTrace();}finally{x++;}
//上边情况下,实际返回的3;
是不是发现finally是都要走了,所以一般我们处理异常的东西,最后消除或者释放的时候都需要在finally中。
1,捕获异常
捕获异常就是我们直接 处理掉异常,让异常到这里就结束。如下例:
package com.company.test;
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;
public class Exception_Error {public static void main(String[] args) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();} finally {
}}}
2,抛出异常
package com.company.test;
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;
public class Exception_Error {public static void main(String[] args) {try{throwChecked(3);}catch(Exception e) {System.out.println(e.getMessage());}throwRuntime(-3);}//该方法内抛出一个Exception异常对象,必须捕获或抛给调用者public static void throwChecked(int a) throws Exception {if(a < 0) {throw new Exception("a的值应大于0,不符合要求");}}//该方法内抛出一个RuntimeException对象,可以不理会直接交给JVM处理public static void throwRuntime(int a) {if(a < 0) {throw new RuntimeException("a的值应大于0,不符合要求");}}}
throw语句用在方法体内,表示抛出异常,由方法体内的语句处理
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。
throw要么和try-catch-finally语句配套使用,要么与throws配套使用
如果抛出的是RuntimeException则既可以显示使用try…catch捕获也可以不理会它
3,异常处理的两大基本原则
尽量不要捕获类似 Exception 这样的通用异常,而是应该捕获特定异常。
不要生吞(swallow)异常。
我是【尔东双月】一枚执着的职场程序员,微信搜索【程序职场】关注我。别忘了三连啊,点赞、收藏、留言,随意给,我不挑。
注:如果文章有任何问题,欢迎毫不留情地指正。
Exception 和Error异常大部分人都犯过的错。的更多相关文章
- 大部分人都不知道的8个python神操作
01 print 打印带有颜色的信息 大家知道 Python 中的信息打印函数 Print,一般我们会使用它打印一些东西,作为一个简单调试. 但是你知道么,这个 Print 打印出来的字体颜色是可以设 ...
- 异常:exception和error的区别
Throwable 是所有 Java 程序中错误处理的父类 ,有两种子类: Error 和 Exception . Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM ...
- PHP 中 Error 和 Exception 两种异常的特性及日志记录或显示
PHP 文档: Error Exception 参考: 深入理解PHP原理之异常机制 我们什么时候应该使用异常 异常和错误 所有示例基于 PHP7. 应用中,关于错误的最佳实践是: 必须报告错误 开发 ...
- Exception、Error、运行时异常与一般异常有何异同
转自博客 https://blog.csdn.net/m0_37531231/article/details/79502778 一.开场白 对于程序运行过程中的可能出现异常情况,java语言使用一种 ...
- java中exception和error有什么区别,运行时异常和一般异常有什么区别
1.exception和error都是继承了throwable类,在java中只有throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型 2.ex ...
- 一、基础篇--1.1Java基础-Exception、Error、RuntimeException与一般异常有何异同
Throwable.Error.Exception.RuntimeException 关系如下类图所示: Throwable: Throwable类是java语言中所有错误或者异常的超类.它的两个子类 ...
- Java-异常Throwable,Exception,Error
异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等. 异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程. Java通过API中Throwable类的众多子类描述各种不同的 ...
- Java的Exception和Error面试题10问10答
在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...
- final,finally,finalize有什么区别?String, StringBuffer, StringBuilder有什么区别?Exception和Error有什么区别?
继上篇JVM学习之后,后面将分三期深入介绍剩余JAVA基础面试题,每期3题. 题目一.final,finally,finalize有什么区别? /*请尊重作者劳动成果,转载请标明原文链接:*/ /* ...
随机推荐
- 痞子衡嵌入式:快速定位i.MXRT600板级设计ISP[2:0]启动模式引脚上电时序问题的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种快速定位i.MXRT600板级设计ISP[2-0]启动模式引脚上电时序问题的方法. 我们知道恩智浦i.MXRT600是主打音频市场的 ...
- 【进阶之路】多线程条件下分段处理List集合的几种方法
这两个月来因为工作和家庭的事情,导致一直都很忙,没有多少时间去汲取养分,也就没有什么产出,最近稍微轻松了一点,后续的[进阶之路]会慢慢回到正轨. 开门见山的说,第一次接触到多线程处理同一个任务,是使用 ...
- 4D毫米波雷达Radar
4D毫米波雷达Radar 围绕雷达.激光雷达.高精定位等新一代传感器技术将会进入量产周期. 自动驾驶公司的竞争,在传感器配置上坦白说并没有太多差异化.除了车载激光雷达属于近几年的产物,类似摄像头.毫米 ...
- CVPR2020论文解读:三维语义分割3D Semantic Segmentation
CVPR2020论文解读:三维语义分割3D Semantic Segmentation xMUDA: Cross-Modal Unsupervised Domain Adaptation for 3 ...
- HarmonyOS技术特性
HarmonyOS技术特性 硬件互助,资源共享 多种设备之间能够实现硬件互助.资源共享,依赖的关键技术包括分布式软总线.分布式设备虚拟化.分布式数据管理.分布式任务调度等. 分布式软总线 分布式软总线 ...
- MindInsight训练可视整体设计介绍
MindInsight训练可视整体设计介绍 MindInsight是MindSpore的可视化调试调优组件.通过MindInsight可以完成训练可视.性能调优.精度调优等任务. 训练可视功能主要包括 ...
- 用NVIDIA Tensor Cores和TensorFlow 2加速医学图像分割
用NVIDIA Tensor Cores和TensorFlow 2加速医学图像分割 Accelerating Medical Image Segmentation with NVIDIA Tensor ...
- CVPR2020:三维点云无监督表示学习的全局局部双向推理
CVPR2020:三维点云无监督表示学习的全局局部双向推理 Global-Local Bidirectional Reasoning for Unsupervised Representation L ...
- 【逆向&编程实战】Metasploit中的安卓载荷凭什么吊打SpyNote成为安卓端最强远控
文章作者:MG1937 QQ:3496925334 CNBLOG:ALDYS4 未经许可,禁止转载 前言 说起SpyNote大家自然不陌生,这款恶意远控软件被利用在各种攻击场景中 甚至是最近也捕获到了 ...
- Django(69)最好用的过滤器插件Django-filter
前言 如果需要满足前端各种筛选条件查询,我们使用drf自带的会比较麻烦,比如查询书名中包含"国"字,日期大于"2020-1-1"等等诸如此类的请求,Djan ...