Java学习路线(16)——异常

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

一、异常

1、概念: 程序在“编译”或“执行”时可能出现的问题。(语法错误不算异常)

2、常见的异常

  • 数组索引越界
  • 空指针
  • 日期格式化

3、作用: 触发异常后,如果没有提前处理,JVM将终止,提高程序的健壮性和安全性。

4、异常体系
Java学习路线(16)——异常

  • Error: 系统级别问题、JVM退出等,代码无法处理。
  • Exception: 程序本身的问题
    • RuntimeException及其子类(运行时异常): 运行时异常,编译阶段不报错。(例如空指针异常、数组越界异常)
    • 非RuntimeException(编译时异常): 编译时错误,编译期必须处理,否则程序无法编译。(例如日期格式化异常)

5、运行时异常

(1)特点: 编译不报错,运行才报错。

(2)常见运行时异常

  • 数组索引越界异常:ArrayIndexOutOfBoundsException
  • 空指针异常:NullPointerException
  • 数字操作异常:ArithmeticException
  • 类型转换异常:ClassCastException
  • 数字转换异常:NumberFormatException

6、编译时异常

(1)特点: 编译时报错。

(2)常见运行时异常

  • 日期解析异常:ParseException

7、异常的执行流程

  • 默认会出现异常的代码自动创建一个异常对象。
  • 异常从方法中出现的点抛出给调用者,调用者最终抛出给JVM。
  • JVM接收异常后,先在控制台输出异常信息。
  • 直接从当前执行的异常点干掉当前程序。

8、异常的处理机制
(1)编译时异常的处理机制
三种处理方式

  • 出现异常直接抛出给调用者,调用者也继续抛出异常。
  • 捕获异常并自行处理异常。
  • 出现异常直接抛出给调用者,调用者捕获并处理异常。

(a)处理方式1——throws

  • 作用方式: 用于方法内,将方法内部产生的异常抛出给调用者。
  • 使用格式:
/*抛出异常的方式1*/
方法 throws 异常1,异常2,...{}
/*抛出异常的方式2*/
方法 throws Exception{} //因为Exception是异 常的总类

(b)处理方式2——try…catch…
作用方式: 监听捕捉异常,用在方法内部,恶意将方法内部出现的异常直接捕获并处理。
使用格式:

/*处理方式1*/
try{
	//受监视的代码块
}catch(异常类型1 变量){
	//处理代码
}catch(异常类型2 变量){
	//处理代码
}...

/*处理方式2*/
try{
	//受监视的代码块
}catch(Exception e){
	//处理代码
}...

(c)处理方式3——前两者结合
作用方式: 方法直接昂异常通过throws抛出给调用者,调用者说道异常后直接捕获异常并处理。
使用方式:

public static void main(String[] args){
	try{
		getInteger();
	}catch(Exception e){
		//处理代码	
	}...
}

public static void getInteger() throws Exception{
	return 3 / 0;
}

(2)编译时异常的处理机制
使用方式: 建议在方法调用时直接使用方法b即可。

9、自定义异常

(1)自定义异常的分类

  • 自定义编译时异常
  • 自定义运行时异常

自定义异常使用流程

  • 定义一个异常类继承RuntimeException类。
  • 重写构造器
  • 出现异常处使用throw new 抛出自定义异常

(2)构建示例

/*异常类继承Exception*/
class MyException extends Exception{
	/*重写构造器*/
	public MyException(){}
	
	public MyException(String message){
		super(message);
	}
}

(3)使用示例文章来源地址https://www.toymoban.com/news/detail-463287.html

public class Main(){
	public static void main(String[] atgs){
		setAge(300); //编辑器会直接提示这是个可能出现异常的地方。
	}
}

public static void setAge(int age){
	if(age > 200 || age < 0){
		throw new MyException("你输入的年龄有问题");
	}
}

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

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

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

相关文章

  • 深入理解JVM虚拟机第二篇:虚拟机概念和JVM整体架构以及字节码的执行路线

      😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(53)
  • 【Java可执行命令】(四)反编译工具javap:深入解析应用程序反编译工具javap ~

    javap 是Java开发工具包(JDK)提供的一个命令行工具,用于反编译Java字节码。它旨在帮助开发人员深入了解和分析已编译的Java类文件。 javap 可以将Java类文件解析为易于阅读的文本形式,展示其中的信息以及反编译出类的结构、方法、字段、常量池等信息 。通过阅读和分析这

    2024年02月10日
    浏览(41)
  • JVM入门篇-JVM的概念与学习路线

    什么是 JVM 定义 Java Virtual Machine - java 程序的运行环境(java 二进制字节码的运行环境) 好处 一次编写,到处运行 自动内存管理,垃圾回收功能 数组下标越界检查 多态 比较 jvm jre jdk 常见的JVM 学习路线 JVM内存结构 垃圾回收器 Java字节码 类加载子系统ClassLoader 运行时即时编译

    2024年02月14日
    浏览(39)
  • 16. 蒙特卡洛强化学习基本概念与算法框架

    蒙特卡洛强化学习(简称MC强化学习)是一种 无模型 强化学习算法,该算法无需知道马尔科夫决策环境模型,即不需要提前获得立即回报期望矩阵R(维度为(nS,nA))、状态转移概率数组P(维度为(nA,nS,nS)),而是通过与环境的反复交互,使用统计学方法,利用交互数据直接进行

    2024年01月21日
    浏览(45)
  • Java异常:基本概念、分类和处理

    在Java编程中,异常处理是一个非常重要的部分。了解如何识别、处理和避免异常对于编写健壮、可维护的代码至关重要。本文将介绍Java异常的基本概念、分类和处理方法,并通过简单的代码示例进行说明。 Java异常是程序在运行过程中出现的问题或意外情况,导致程序无法正

    2024年02月07日
    浏览(45)
  • 【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引

    自学Java怎么学,找对方向很关键!在这里为大家分享最全的架构师级 Java全栈学习路线及知识清单 ! 包含 JavaSE基础 , JavaWeb , SSM框架 , Linux运维 , 分布式与微服务 , 大数据开发 ~ 本人研究人生一枚,自学Java中,后期会逐步分享清单中所有技术与知识的详细介绍文章,

    2024年02月03日
    浏览(47)
  • Java学习星球,Java学习路线

    大家好,我是哪吒,一个靠着热情攀登至C站巅峰的中年男子,CSDN粉丝40万+,2022CSDN博客之星Top1,2021CSDN博客之星Top2,8年开发管理经验,目前就职于某一线大厂,专注Java硬核干货分享,立志做到Java赛道全网Top N。 最近有很多小伙伴参加了我的新星计划2023·第1期【Java】赛道报

    2024年02月02日
    浏览(35)
  • java抛出异常后,后续代码是否继续执行

            java 抛出异常后,后面的语句到底是怎么执行的呢?哪些会继续执行,哪些不再执行,这是本章要探讨的问题。为方便广大友友解决问题,先把结论丢出来: 1、有 try-catch 语句块,并且 throw 在 catch 语句块里,那么 try 语句块中引发异常(报错)的那一行代码的后

    2024年02月16日
    浏览(36)
  • .net Assembly.Load重复加载程序集造成执行异常

    最近ET做热更重载dll的时候,返回登陆会重新检测新的dll,首次登录之前已经Assembly.Load()过一次dll,第二次返回登陆再次load dll到内存中,Invoke执行方法的时候,异常了,有些方法执行了,有些未执行,于是查资料,看到些老资料说Assembly.Load重复加载同名dll不会有问题,而却现

    2024年02月07日
    浏览(59)
  • 命令行编译和执行java代码

    虽然现在IDE很强大又很智能,但是平常随意写点练手的代码的时候,直接在命令行中使用vim和java命令更为方便快捷,可以做到无鼠标纯键盘的操作。 首先保证将java相关指令添加到了环境变量中; 1.编译class文件: 编译好的class文件会放置到环境当前目录 (./)中。-d命令的作用

    2024年02月02日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包