- 异常:的根父类是:Throwable
- 两个子类:Error 、 Exception
- Error:java虚拟机无法解析的严重问题。如:JVM系统内部的错误、资源耗尽等严重问题
- , 一般不编写针对性的代码进行处理,即回去改代码,这里处理不了了。
- 例如:StackOverflowError (栈内存溢出)、OutOfMemoryError (堆内存溢出)
- Exception:其他因编程错误,或偶然在外部因素导致的一般性问题,需要使用针
- 对性的代码进行处理,使程序继续运行。否则一旦发生异常,程序也会挂 掉。
- 例如:空指针访问、试图读取不存在的文件、网络连接中断、数组角标越界
- - 编译时异常:(受检异常)在执行javac.exe命令时,出现异常
- - 运行时异常:(非受检异常)在执行java.exe命令时,出现异常
- 常见的异常:
- - ArrayIndexOutOfBoundsException 数组角标越界
- - NullPointerException 空指针异常
- - ClassCastException 类型转换异常
- - NumberFormatException 数据类型异常
- - InputMismatchException 数据不匹配异常
- - ArithmeticException 算数异常
- 异常处理的方式:
- I--- try-catch-finally
- >语法格式:
- try{}
- catch{}
- catch{}
- catch{}
- ...
- finally{}
- >使用细节:
- - 将可能出现异常的代码声明在try语句中,就会自动生成一个
- 对应的异常的对象,将此对象抛出,
- - 针对于try抛出的异常类的对象,使用之后的catch语句进行匹
- 配,一旦匹配上,就进入语句块中进行处理,一旦处理结束,代码就可以继续
- 向下执行。
- - 如果声明了多个catch结构,不同的异常类型在不存在父子关
- 系的情况下,谁生声明在上面,谁声明在下面都可以;但是
- 如果满足了父子关系,则必须将子类声明在父类结构的上
- 面。否则,报错。
- - 可以嵌套使用try-catch结构
- >catch中异常处理方法:
- - 自己编写输出语句
- - printStackTrace():打印异常信息(一般都用这种方式)。
- - getMessage():获取发生异常的原因。
- >try中声明的变量出了try结构后就不能调用了。
- >finally的理解
- - 我们将一定要被执行的代码声明在finally结构中。
- - 更深刻的理解:无论try中或catch中是否存在尚未被处理的异
- 常,无论try中或catch中是否存在return语句等,finally
- 中声明的语句都一定要把被执行。
- - 但是注意:唯一的例外:使用System.exit(0);来终止当前正在运行的java虚拟机
- >catch和finally是可以有可以没有的,但是finally是不能单独使用的。
- I--- throws
- 》格式:在在方法的声明处,使用“throws 异常类型1,异常类型2,...”
- 例如:public void test()throws 异常类型1,异常类型2,...{ 可能存在编译错误 }
- 》注意:在方法重写时,用throws抛出的编译时异常,一定要是其父
- 类的要重写的方法抛出的异常相同,或者是子类,即,
- 如果父类的方法没有抛出异常,则子类中重写的该方法也不
- 能抛出异常,如果父类的方法抛出了异常,则子类重写的方
- 法所抛出的异常要与父类异常相同,或者是其的子类,否则 会出错。
- 例如:如果是多态:person p = new man();
- 此时调用方法,时要解决方法可能抛出的异常,但是由于创建的是父
- 类的对象只能捕获父类所抛出的异常,但是,执行的是子类中重写发
- 的方法,该方法如果抛出的异常大于父类的异常,则虽然编译通过,
- 但是运行时一旦抛出异常就会直接挂掉,因为没有解决。但是,可以
- 抛出运行时异常(随便抛)。
- 手动抛出异常
- - throw:可以抛出异常
- - 举例:(详见ThrowTest)
-
public class ThrowTest { public static void main(String[] args) { students s = new students(); s.re(-10); System.out.println(s); } } class students { int id; public void study() { System.out.println("学生学习"); } public void re(int id) { if(id > 0) { this.id = id; } else { throw new RuntimeException("id不能为负数"); //抛出的是运行时的异常,不需要解决 } } @Override public String toString() { return "students [id=" + id + "]"; } } - throw 和 throws 的区别:
- - throw:是创建异常对象,手动抛出异常的对象。
- - throws:是异常处理的一种方式。用来解决可能出现的异常。
- 自定义异常:
- 1. 如何自定义异常:
- - 继承于现有的异常体系。通常继承于:RuntimeException(不需要解决) \ Exception
- (需要解决)
- - 通常提供几个重载构造器
- - 提供一个全局常量,声明为:atatic final longserialVersionUID
- 2. 如何使用自定义的异常类:
- - 子啊具体的代码中,满足指定的条件的情况下,需要手动使用
- “throw + 自定义异常类的对象”方式,将异常对象抛出
- - 如果自定义异常类是非运行时异常,则必须考虑如何处理此异常对
- 象。(具体:① try-catch-finally ② throws)
- 3. 为什么需要自定义异常类型:
- - 我们其实更关心的是,通过异常的名称就能直接判断此异常出现的
- 原因。既然如此,那我们就有必要在实际的开发中
- 当不满足我们指定的条件时,指明自己特有的异常类,通过异常类的
- 名称,就能知道问题的所在。
- 4.举例(详见Custom_Exception_Test)
-
public class Custom_Exception_Test { public static void main(String[] args) { try { person p = new person("张三",-12); System.out.println(p); //由于上一行报错了,因此这一行不执行 } catch(NoNegativeNumber e) { e.printStackTrace(); //打印错误的具体信息 } finally { System.out.println("必须执行的语句!"); } System.out.println("以上异常解决,此语句执行"); //因为错误已经被处理,因此这一行执行 // System.out.println(p); //不能用 p 因为 p 的对象创建在 try 中,因此出了大括号就不能再使用了。可以将对象 //外面(try的外面)声明,在里面赋值,但是赋的值也带不出去 } } class NoNegativeNumber extends Exception //自定义异常类,必须继承于RuntimeException(不需要处理) \ Exception(需要处理) { static final long serialVersionUID = 54994165L; //要有,唯一标识 public NoNegativeNumber() //重载父类的构造器 { super(); } public NoNegativeNumber(String message) //当对象调用e.printStackTrace();可以打印出括号里的信息 { super(message); } } class person { String name; int id; public person() { super(); } public person(String name, int id) throws NoNegativeNumber //解决异常的方法(抛给调用此方法的方法) { super(); this.name = name; if(id < 0) { throw new NoNegativeNumber("输入的id为负数!"); //手动抛出异常,因为重写了 } //public NoNegativeNumber(String message)构造方法 else //所以可以输入字符串 { this.id = id; } } @Override public String toString() { return "person [名字:" + name + ", 编号:" + id + "]"; } }
相关推荐
FPGA编译加速实战:6大可落地的Vivado优化策略
FPGA编译本质上是NP-hard约束满足问题求解,而非传统软件编译;Vivado作为时序驱动的硬件实现工具链,其耗时瓶颈集中在Implementation阶段的布局布线(PnR)与逻辑优化。理解这一原理,才能跳出‘加线程’‘升版本’等表面优化,转向精准时序约束、增量编译、物理锚点控制、IP配置精简等工程级干预。这些技术手段直接作用于Vivado的Tcl执行流与底层求解空间,显著压缩搜索范围、减少无效迭代——尤其适用于Zynq/UltraScale等中大型项目(LUT > 80K、多时钟域、DDR/PCIe
快速学习理解JAVA异常
快速学习JAVA异常(try/catch用法) JAVA中很多异常类,这些类对应了各种各样可能出现的异常事件,所有异常对象都是派生于Throwable类的一个实例。如果JAVA内置的异常类不能够满足开发人员的需要,还支持自定义异常类。 1,异常的分类 Throwable类派生出两大子类:Error和Exception。Error表示程序无法解决的错误,程序员不需要管。Exception又可以分为CheckedExcepetion(已检查异常)和RuntimeException(运行时异常),这类异常是需要程
STM32通过ESP8266连接机智云APP(第二讲,烧录固件并测试)
今天与大家分享STM32通过ESP8266连接机智云APP,并完成数据的上传下发第二讲。带大家一起烧录机智云固件到ESP8266并且将其通过机智云串口助手与APP进行测试。
java学习——输入作为异常处理的理解
1.在java中,输入需要在使用Syste
STM32MP157+AD7606BSTZ四通道IEPE传感器采集方案实战(附完整电路图)
本文详细介绍了基于STM32MP157和AD7606BSTZ的四通道IEPE传感器采集方案,涵盖硬件电路设计、软件驱动开发及系统性能优化。通过精确的恒流源设计和同步采样技术,实现高精度振动信号采集,适用于工业振动监测等应用场景。
阿里云百炼接入本地Claude,接入idea
阿里云百炼平台提供两种接入方式:未购买套餐时使用通用API Key(sk-xxxxx),需注意免费额度独立计算且不会自动切换模型;购买Coding Plan套餐后使用专属API Key(sk-sp-xxxxx),享受固定月费无超支风险。配置需在.claude/settings.json中设置认证信息,包括API Key和Base URL。建议开启"用完即停"功能避免意外扣费,不同模型的免费额度互不影响。购买套餐后还可通过IDEA插件Claude Code进行集成,实现固定费用下的稳定使用
java——异常的学习(能够快速理解)
本次对java中的异常进行总结,介绍一些常用的异常,如何使用以及如何定义异常:以下代码可以直接粘贴到idea中运行,便于理解以及自己扩增新的内容;
PT32F030与MT6826S SPI通讯实战:从硬件连接到数据交互全流程解析
本文详细解析了PT32F030与MT6826S通过SPI通讯的全流程,包括硬件连接、电路设计、SPI外设初始化配置以及数据交互协议实现。通过实战案例和代码示例,帮助开发者快速掌握PT32F030与MT6826S的SPI通讯技术,实现精准的角度和速度数据采集。
学习java异常处理机制个人的一些理解
学习java已经比较久一段时间了,其实对于java异常这方面的知识只停留在javac让我throws一下或trycatch一下我就直接做了,其实并没有真的了解整个java的异常处理机制是怎样的,最近...
物联网应用开发教程专栏介绍与说明——列表目录查阅(持续更新)
为方便查阅学习本专栏,特整理专栏介绍与说明及提供列表目录便于查阅。阿齐Archie《物联网应用开发教程》专栏。本专栏为物联网应用开发教程,将更新涵盖常见的WIFI、蓝牙、蜂窝网、以太网、Lora、NB-iot等物联网技术实战应用及详解其技术知识。专栏为技术文章,订阅一个文章即可本专栏内所有文章可看,实战开发,亲测无误,附视频演示效果,会持续更新本专栏。本专栏内有理论篇也有完整实战应用篇。
12-RK平台U-Boot启动流程
先看概述,把这一章要回答的问题摆出来,带着问题听。RK 特有的 BootROM -> MiniLoader -> SPL -> U-Boot -> Kernel。这是因为 RK 平台使用闭源的 DDR 初始化固件,需要通过 MiniLoader 来加载和运行。为什么多一层?这是 RK 平台的特殊性决定的。RK 平台使用闭源的 DDR 初始化固件,这段代码 Rockchip 不开源,只能以二进制形式提供,它需要一个载体来加载和运行,这个载体就是 MiniLoader。
【JAVA】对异常的理解及实例(不断学习,不断更新)。
一、理解异常 异常就是出错,系统会提示错误的信息。学习异常主要有两个目的: 1、一个是看懂JAVA(eclipce)中的异常错误信息,我们常称之为【程序报错】,如:下图,你得知道是啥意思,并且去调试错误解决问题。 2、为你做的软件用户防止用户输入错误和给出相应的友情提示。 比如我们在使用APP注册用户的时候,经常会出现输入身份证号不合规,姓名(张三,输入了张0)只有一个字或有数字等。 ...
零基础学simulink仿真建模--基于Simulink进行近端策略优化(PPO)路径规划的仿真建模
特点高效性与稳定性:通过引入剪裁机制,在更新策略时限制步长,从而提高了训练过程的稳定性和效率。适用于多种动作空间:可以处理连续和离散的动作空间问题。无需模型:不需要预先知道环境的确切模型,适合复杂或未知环境。挑战收敛速度与稳定性:确保算法能够在合理的时间内找到近似最优解,并保持训练过程的稳定性。探索与利用平衡:在探索新路径和利用已知信息之间取得平衡。计算资源:对于大规模状态空间和动作空间,计算资源需求较高。首先明确要模拟的任务内容。目标(例如到达指定地点、避开障碍物等)。
Java的学习之路(day9)异常的理解
异常 Java中的异常用于处理非预期的情况,如文件没找到,网络错误,非法的参数等。Java中的异常可分为两类。 1.Error:JVM系统内部错误,资源耗尽等严重情况。 2.Exception:其他因编程错误或偶然的外在因素而导致的一般性问题。 异常处理机制 1.Java提供的是异常处理的抓抛模型。 2.Java程序运行的过程中如出现异常,会自动生成一个异常类对象。该异常类对象将被提交...
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
Java基础 自定义异常 自我学习以及总结和个人理解
在大部分业务系统中都有定义自己的异常类型,用于区分于一般的Exception 以及 RunntimeException。截止目前为止我认为这个自定义异常的作用更多的是可以用于将自己业务系统中的错误更明显的区分出来。通过识别异常类型为自己定义的异常来做一些特别的异常信息处理和返回,或者当出现某个自定义的业务异常后针对某个或者某些异常做额外的代码处理。
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
一篇文章带你基本理解Java中的异常处理—菜鸟教程学习记录
在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。所有异常都必须是 Throwable 的子类。如果希望写一个检查性异常类,则需要继承 Exception 类。如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。只继承Exception 类来创建的异常类是检查性异常类。下面的 InsufficientFundsException 类是用户定义的异常类,它继承自 Exception。一个异常类和其它任何类一样,包含有变量和方法。
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
java异常的学习和理解(包含异常的处理方式,异常的分类,运行时异常和编译时异常,自定义异常)
/* 1、静态导入: 减少代码书写量 标准写法:导入包的时候才能使用。 例如import static java.lang.System.out; 方法的可变参数:前提是方法参数数据类型确定 参数个数任意个。 但是一个方法只能有一个可变参数,可变参数只能写在最有一位。 方法(数据类型...参数) { } */ public static
java学习之异常处理(概念理解,了解处理步骤以及处理方式)
首先要知道,在编写Java程序时可能会出现的三种错误:1、语法错误;2、运行错误;3、逻辑错误 语法错误:在编写程序过程中没有遵循编程语言的的规则出现的错误,这种错误一般会由IDE直接指出。 运行错误:常见的就是编写完一个小项目以后IDE不提示错误,但是在运行过程中发现了一个不能执行的操作,就会导致运行错误 逻辑错误:程序结果没有按照预期方案执行。 异常处理的是运行错误,目的是为了避免程序非正常终止带来的严重问题。(可以想象以下在转帐时断网了你的钱转出了,但对方没有收到,钱也不在你的账户也不在对方账
Java学习篇-------理解异常
import java.util.Scanner; public class QISHIWU { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int a,b; a=scan.nextInt(); b=scan.nextInt(); try{ if(a>
我要做技术!!-java基础篇学习笔记&理解4---异常,反射,泛型
异常 异常的分类 java的异常大致可分为运行时异常和普通异常。在使用IDE开发工具的时候运行时异常不会提示,这类异常一般在运行时才会出现,大致是有类转换异常,空指针异常,数组索引溢出异常等。通常这类异常都是设计代码时候一些错误导致的。 普通异常就是可以在编写代码时就能捕获的异常,这种异常只要在程序正常运转的情况下一般不会出现,就例如服务器掉线等硬件问题导致的异常。所谓的异常的捕获就是指通过编写...
【Java基础总结】舍友给我带饭,请我给他讲明白Java中的引用,对象,和空指针异常~听完直呼值了,问我下顿想吃啥~
Java史上最有爱的总结!一文带你彻底搞懂面试中引用和对象,从空指针异常入手,惊呼面向对象So easy!
理解、学习与使用 JAVA 中的 OPTIONAL
https://www.cnblogs.com/zhangboyu/p/7580262.html
Java基础—异常
Java异常处理 1.异常 在Java语言中,将程序执行中发生的不正常情况称为“异常” 2.为什么会有异常处理? 为了避免中断程序的执行流程,Java采用异常处理机制,将异常处理的程序代码集中在一起,与正常的程序代码分开,使得程序简洁,并易于维护。 3.异常的体系结构 异常的根类:Throwable ,其子类有 1)Error: JVM无法解决的严重问题(JVM系统内部错误、资源耗尽等...
《java学习笔记》之异常处理机制
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**
java异常的思考与学习心得
最近几日在学习java中的异常处理,颇费心思,自己也终于从一片迷云中走了出来,恰好看到前几天论坛里有一位bei7318的朋友曾经发帖问道:“什么抛出啊,引发啊?谁能说说异常的心得?” 却无人回应,刚好趁着周末,在这里好好总结一下学习异常的思路与心得,希望能帮到那些对异常感到困惑的朋友。 我开始学习异常时,就像我在http://topic.youkuaiyun.com/u/20111108/12/0
java基础学习总结——异常处理
java基础学习总结——异常处理
413



被折叠的 条评论
为什么被折叠?



