【javaSE】认识异常(1)

这篇具有很好参考价值的文章主要介绍了【javaSE】认识异常(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 ❤️❤️前言~🥳🎉🎉🎉

hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥💥,如果发现这篇文章有问题的话,欢迎各位评论留言指正,大家一起加油!一起chin up!👍👍 

【javaSE】认识异常(1),JAVA知识点专栏,javascript,开发语言,ecmascript,java

💥个人主页:E绵绵的博客
💥所属专栏:JAVASE题目练习  JAVASE知识点专栏  c语言知识点专栏   c语言题目练习

❤️❤️今天我们就给大家带来异常的介绍,对于异常的知识点很多很复杂,但只要肯用心,一定能摸透的。那么一起加油,出发吧!

【javaSE】认识异常(1),JAVA知识点专栏,javascript,开发语言,ecmascript,java

异常的概念与体系结构

异常的概念 

​​​​ 在Java中,将程序执行过程中发生的不正常行为称为异常。

🎯🎯注意开发过程中遇到的语法错误和逻辑错误不被称为异常():

例如将 System.out.println 拼写错了, 写成了 system.out.println.这是语法错误不是异常。

或者你的冒泡排序中代码错了导致结果不对这也不叫异常。是逻辑错误不是异常。

而下方才是真正的异常 :【javaSE】认识异常(1),JAVA知识点专栏,javascript,开发语言,ecmascript,java

从上述过程中可以看到,java中不同类型的异常,都有与其对应的类来进行描述。所以我们常说异常其实是一个类

🎯🎯异常的体系结构  

【javaSE】认识异常(1),JAVA知识点专栏,javascript,开发语言,ecmascript,java

🎯🎯因为异常其实是类,且从上图我们可以得出:

1. Throwable:是异常体系的顶层父类,其派生出两个重要的子类 Error 和 Exception,它们两个是异常的两大类别:

2. Error:指的是Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽等,典型代表: StackOverflowError(栈溢出)和OutOfMemoryError(内存不足),Errow是严重错误,一旦发生程序就会崩溃,怎么救也救不回来。

3. Exception: 是指在程序运行过程中出现的非正常情况,但它不会导致程序立即终止。Exception异常可以被程序员通过代码捕获并进行处理,以保证程序的正常执行。该类异常通常是由于输入错误、网络故障、文件读写错误等引起的。例如,除以零、数组越界等都属于异常。当异常发生时,程序会抛出一个异常对象,并根据异常处理机制进行相应的处理。

虽然Throwable才是真正的异常顶层父类,但我们平时所说的异常通常是Exception,errow虽然本质是异常,但我们通常叫做错误。  

❤️❤️除此之外,我们还从上得知exception异常分为运行时异常(非受检异常)和编译时异常(受检异常) 

运行时异常 

🎯🎯运行时异常:运行时异常是在程序运行过程中才会发生的异常.

常见的运行时异常包括以下五种:

NullPointerException(空指针异常):当程序试图访问一个空对象的成员变量或调用空对象的方法时,会抛出空指针异常。

ArrayIndexOutOfBoundsException(数组越界异常):当程序试图访问数组中不存在的索引位置时,会抛出数组越界异常。

ClassCastException(类转换异常):当程序试图将一个对象强制转换为不兼容的类型时,会抛出类转换异常。

IllegalArgumentException(非法参数异常):当方法接收到一个不合法或不适当的参数时,会抛出非法参数异常。

ArithmeticException(算术异常):当程序执行算术运算时出现错误,例如除以零或取模运算的除数为零,会抛出算术异常。

这些异常都是在程序运行时可能发生的,可以通过合理的代码设计和异常处理机制来避免或处理这些异常。

运行时异常可以选择处理,也可以不处理:

如果不处理,程序会运行到异常位置时终止并抛出异常信息。处理则可以不报错误一直运行到程序结束。

 编译时异常

🎯🎯编译时异常是在编译阶段检测到的异常,在代码中必须对它进行处理。如果不处理编译时异常,编译器会报错并阻止程序的编译,运行都运行不了。

一般是发生网络,数据库和文件操作的时候出现编译异常:

【javaSE】认识异常(1),JAVA知识点专栏,javascript,开发语言,ecmascript,java

以上我们都还没学。

当然也存在我们学过的编译时异常,就是clone(),必须处理它才能运行程序

【javaSE】认识异常(1),JAVA知识点专栏,javascript,开发语言,ecmascript,java

处理编译时异常的方式可以使用try-catch语句块捕获异常并进行相应的处理,或者使用throws关键字将异常抛出给上层调用者处理。我们之后会讲述这些关键字。

防御式编程

❤️❤️错误在代码中是客观存在的. 因此我们要让程序出现问题的时候及时通知程序猿.

其主要的方式如下: 

❤️❤️ LBYL: Look Before You Leap. 在操作之前就做充分的检查. 即:事前防御型

boolean ret = false;
ret = 登陆游戏();
if (!ret) {
 处理登陆游戏错误;
    return;
}
ret = 开始匹配();
if (!ret) {
 处理匹配错误;
    return;
}
ret = 游戏确认();
if (!ret) {
 处理游戏确认错误;
    return;
}
ret = 选择英雄();
if (!ret) {
    处理选择英雄错误;
    return;
 
}
ret = 载入游戏画面();
if (!ret) {
 处理载入游戏错误;
    return;
}
.....

缺陷:正常流程和错误处理流程代码混在一起, 代码整体显的比较混乱。所以我们一般很少用该方法。

❤️❤️EAFP: It's Easier to Ask Forgiveness than Permission. "事后获取原谅比事前获取许可更容易". 也就是先操作, 遇到问题再处理. 即:事后认错型 

try {
    登陆游戏();
    开始匹配();
    游戏确认();
    选择英雄();
    载入游戏画面();
   ...
} catch (登陆游戏异常) {
    处理登陆游戏异常;
} catch (开始匹配异常) {
 处理开始匹配异常;
} catch (游戏确认异常) {
 处理游戏确认异常;
} catch (选择英雄异常) {
 处理选择英雄异常;
} catch (载入游戏画面异常) {
 处理载入游戏画面异常;
}
......

优势:正常流程和错误流程是分离开的, 程序员更关注正常流程,代码更清晰,容易理解代码

所以我们在进行处理时基本都是用EAFP,很少用LBYL。

在Java中,异常处理主要用到这5个关键字:throw、try、catch、final、throws。而这五个关键字要讲解的话要讲很久,所以我们就放到下篇文章里。

 总结

这篇文章已经有很多知识点了,够铁汁们消化了,到这里就先结束吧,下篇文章我们就带来异常处理的五个关键字的讲解以及一些其他知识点。还希望各位大佬们能给个三连,点点关注,点点赞,发发评论呀,感谢各位大佬~❤️❤️💕💕🥳🎉🎉🎉

【javaSE】认识异常(1),JAVA知识点专栏,javascript,开发语言,ecmascript,java文章来源地址https://www.toymoban.com/news/detail-858895.html

到了这里,关于【javaSE】认识异常(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《人工智能专栏》必读150篇 | 专栏介绍 & 专栏目录 & Python与PyTorch | 机器与深度学习 | 目标检测 | YOLOv5及改进 | YOLOv8及改进 | 关键知识点 | 工具

    各位读者们好,本专栏最近刚推出,限于个人能力有限,不免会有诸多错误,敬请私信反馈给我,接受善意的提示,后期我会改正,谢谢,感谢。 第一步 :[ 购买点击跳转 ] 第二步 : 代码函数调用关系图(全网最详尽-重要) 因文档特殊,不能在博客正确显示,请移步以下链接

    2024年02月02日
    浏览(78)
  • JavaScript知识系列(2)每天10个小知识点

    👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! 在 JavaScript 中,如果您尝试使用 new 来实例化(创建对象)一个箭头函数,会导致运行时错误。箭头函数与普通函数(使用 function 声明的函数)

    2024年02月09日
    浏览(47)
  • 【手撕面试题】JavaScript(高频知识点三)

    目录 面试官:什么是防抖和节流,他们的应用场景有哪些? 面试官:js中什么是可选操作符,如何访问数组? 面试官:请简述一下 event loop 面试官:请简述 node/v8 中的垃圾回收机制 面试官:如何删除项目中没有使用到的 package? 面试官:请你谈谈 js 中在 new 的时候发生了什么

    2023年04月08日
    浏览(46)
  • 50个知识点由浅入深掌握Javascript

    近期整理了JavaScript知识体系,50个知识点由浅入深掌握Js建议收藏,如有问题,欢迎指正。 1995年, 布莱登·艾奇 (美国人)在网景公司,用10天写的一门语言。 Js是一门:动态的,弱类型的,解释型的,基于对象的脚本语言,同时Js又是单线程的。 动态类型语言: 代码在执

    2024年02月11日
    浏览(53)
  • 每个.NET开发都应掌握的C#异常处理知识点

    上篇文章讲述了C#集合知识点,本文将介绍C#异常处理知识点。异常处理是.NET开发中至关重要的一部分,它允许开发者在程序出现错误或不正常情况时采取适当的措施,从而提高应用程序的稳定性和可靠性。本文将介绍C#异常处理知识点,异常的基本概念略过,请查看官网。

    2024年02月08日
    浏览(56)
  • javascript打飞机程序8x8x飞机大战js打飞机程序,飞机大战知识点包含了JavaScript面向过程的全部知识点,包括变量、运算符、判断、循环、数组、自定义函数、系统函数、事件等。...

    讲解了JavaScript编程语言制作游戏界面,添加游戏控制、制作元素动画、制作多元素场景,添加碰撞功能、制作精灵动画等功能 源码如下: html:

    2024年02月16日
    浏览(66)
  • Java知识点:

    1、Java中的(8个)基本数据类型及其包装类:         byte(字节)                  8          -128 - 127                                                                     0         short(短整型)             16         -32768 - 32768               

    2024年02月13日
    浏览(42)
  • java相关知识点

    1.String和StringBuffer如何互相转化 StringBuffer buffer = new StringBuffer(string); String string = buffer.toString();  2.如何实现两个数组内容的拷贝  3.如何去除字符串首尾空格 str.trim()  4.字符串和字符数组如何相互转换 字符串转字符数组:str.toCharArray(); 字符数组转字符串:strs.valueOf(char[] ch)  

    2023年04月23日
    浏览(45)
  • 脚踏Java知识点

    三元运算符和if语句格式的区别 语法格式: 表达式执行: 返回值: 使用场景: switch语句 switch语句的基本语法如下: switch语句的执行流程如下: 需要注意的是: 下面是一个示例,演示了如何使用 switch 语句判断星期几: 循环结构 for循环: 具体执行过程为 while循环: 具体

    2024年02月13日
    浏览(49)
  • JAVA知识点梳理

    boo=false; //每一轮排序都会将最大的一个排到最后 所以-i 2.第一次不同如果是数值,返回长度差 第一次不同如果是字符,返回两个字符的Ascrll码的差值

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包