先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索【程序职场】关注这个执着的职场程序员。

我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验。

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异常大部分人都犯过的错。的更多相关文章

  1. 大部分人都不知道的8个python神操作

    01 print 打印带有颜色的信息 大家知道 Python 中的信息打印函数 Print,一般我们会使用它打印一些东西,作为一个简单调试. 但是你知道么,这个 Print 打印出来的字体颜色是可以设 ...

  2. 异常:exception和error的区别

    Throwable 是所有 Java 程序中错误处理的父类 ,有两种子类: Error 和 Exception .     Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM ...

  3. PHP 中 Error 和 Exception 两种异常的特性及日志记录或显示

    PHP 文档: Error Exception 参考: 深入理解PHP原理之异常机制 我们什么时候应该使用异常 异常和错误 所有示例基于 PHP7. 应用中,关于错误的最佳实践是: 必须报告错误 开发 ...

  4. Exception、Error、运行时异常与一般异常有何异同

    转自博客  https://blog.csdn.net/m0_37531231/article/details/79502778 一.开场白 对于程序运行过程中的可能出现异常情况,java语言使用一种 ...

  5. java中exception和error有什么区别,运行时异常和一般异常有什么区别

    1.exception和error都是继承了throwable类,在java中只有throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型 2.ex ...

  6. 一、基础篇--1.1Java基础-Exception、Error、RuntimeException与一般异常有何异同

    Throwable.Error.Exception.RuntimeException 关系如下类图所示: Throwable: Throwable类是java语言中所有错误或者异常的超类.它的两个子类 ...

  7. Java-异常Throwable,Exception,Error

      异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等. 异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程. Java通过API中Throwable类的众多子类描述各种不同的 ...

  8. Java的Exception和Error面试题10问10答

    在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...

  9. final,finally,finalize有什么区别?String, StringBuffer, StringBuilder有什么区别?Exception和Error有什么区别?

    继上篇JVM学习之后,后面将分三期深入介绍剩余JAVA基础面试题,每期3题. 题目一.final,finally,finalize有什么区别? /*请尊重作者劳动成果,转载请标明原文链接:*/ /* ...

随机推荐

  1. redis 基本操作命令

    redis 基本操作 String 操作字符串 1 SET key value 设置指定 key 的值 ​ 2 GET key 获取指定 key 的值. ​ 3 GETRANGE key start ...

  2. Locust入门

    Locust入门   Locust是一款Python技术栈的开源的性能测试工具.Locust直译为蝗虫,寓意着它能产生蝗虫般成千上万的并发用户: Locust并不小众,从它Github的Star数量就 ...

  3. docker部署node.js

    1.dockerfile FROM node:14.16.0 RUN mkdir -p /var/log/lily/ RUN mkdir -p /opt/node # 工作目录 WORKDIR /op ...

  4. 云ERP真的已经玩不转了吗?

    欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 注:以下云ERP特指Saas ERP,非指ERP系统部署在云端. 不得不说,如今市场对传统ERP的接受度要远比云ERP高得多,95%的中大型 ...

  5. c++ 各种数据结构的时间空间复杂度

    普通线段树    时间 log2(n); 空间 n+log2(n)+log4(n)+log(8)n+.....+logn(n)==n*4; 动态开点线段树 时间 log2(n); 空间 q*log2( ...

  6. 整理AI性能指标

    整理AI性能指标 Sorting out AI performance metrics 推理性能的最佳衡量标准是什么? 在人工智能加速器的世界里,对于给定的算法,芯片的性能经常以每秒万亿次的运算量(T ...

  7. Contos8 安装 MariaDb 时报错:Could not open mysql.plugin table: table mysql.plugin

    导语: 因个人服务器误删了一些文件导致MariaDB崩溃,一直在报错,所以想着重装一下,没想到在重装后启动时再次报错(与之前报错不同),这次的报错原因大致是因为某些插件表找不到. 因此又开启了漫长的寻 ...

  8. webgl变换:深入图形平移

    在以前的文章里,不管是绘制图形,绘制点亦或者是改变色值,所有的内容都是静态的. 在 webgl 里,图形的运动分为 平移.旋转.缩放 三种类型. 接下来,我们会从零基础开始,一点一点来深入了解图形如何 ...

  9. Linux命令大全之帮助命令及压缩命令

    man(manual):帮助命令 help用于解释shell内部命令 格式:help shell内部命令 ls 命令  --help man 命令 info 命令 .zip    .gz    .bz ...

  10. 技术解密 |阿里云多媒体 AI 团队拿下 CVPR2021 5 冠 1 亚成绩的技术分享

    6 月 19-25 日,备受全球瞩目的国际顶级视觉会议 CVPR2021(Computer Vision and Pattern Recognition,即国际机器视觉与模式识别)在线上举行,但依然人 ...