【JavaSE】Java基础语法(二十五):异常

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




【JavaSE】Java基础语法(二十五):异常

1. 异常

  • 异常的概述
    异常就是程序出现了不正常的情况

  • 异常的体系结构
    【JavaSE】Java基础语法(二十五):异常

2. 编译时异常和运行时异常的区别

  • 编译时异常
    • 都是Exception类及其子类
    • 必须显示处理,否则程序就会发生错误,无法通过编译
  • 运行时异常
    • 都是RuntimeException类及其子类
    • 无需显示处理,也可以和编译时异常一样处理
  • 图示
    【JavaSE】Java基础语法(二十五):异常

3. JVM默认处理异常的方式

  • 如果程序出现了问题,我们没有做任何处理,最终JVM 会做默认的处理,处理方式有如下两个步骤:
    • 把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
    • 程序停止执行

4. 查看异常信息

控制台在打印异常信息时,会打印异常类名,异常出现的原因,异常出现的位置
我们调bug时,可以根据提示,找到异常出现的位置,分析原因,修改异常代码


5. throws方式处理异常

  • 定义格式
public void 方法() throws 异常类名 {
}
  • 示例代码
public class ExceptionDemo {
	public static void main(String[] args) throws ParseException{
		System.out.println("开始");
		// method();
		method2();
		System.out.println("结束");
	}
	
	//编译时异常
	public static void method2() throws ParseException {
		String s = "2048-08-09";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date d = sdf.parse(s);
		System.out.println(d);
	}
	
	//运行时异常
	public static void method() throws ArrayIndexOutOfBoundsException {
		int[] arr = {1, 2, 3};
		System.out.println(arr[3]);
	}
}
  • 注意事项
    • 这个throws格式是跟在方法的括号后面的
    • 编译时异常必须要进行处理,两种处理方案:try…catch …或者 throws,如果采用 throws 这种方案,在方法上进行显示声明,将来谁调用这个方法谁处理
    • 运行时异常因为在运行时才会发生,所以在方法后面可以不写,运行时出现异常默认交给jvm处理

6. throw抛出异常

  • 格式
    throw new 异常();

  • 注意
    这个格式是在方法内的,表示当前代码手动抛出一个异常,下面的代码不用再执行了

  • throws和throw的区别
    【JavaSE】Java基础语法(二十五):异常

  • 示例代码

public class ExceptionDemo8 {
	public static void main(String[] args) {
		//int [] arr = {1,2,3,4,5};
		int [] arr = null;
		printArr(arr);//就会 接收到一个异常.
		//我们还需要自己处理一下异常.
	}
	
	private static void printArr(int[] arr) {
		if(arr == null){
			//调用者知道成功打印了吗?
			//System.out.println("参数不能为null");
			throw new NullPointerException(); //当参数为null的时候
			//手动创建了一个异常对象,抛给了调用,产生了一个异常
		}else{
			for (int i = 0; i < arr.length; i++) {
				System.out.println(arr[i]);
			}
		}
	}
}

7 . try-catch方式处理异常

  • 定义格式
try {
	可能出现异常的代码;
} catch(异常类名 变量名) {
	异常的处理代码;
}
  • 执行流程

    • 程序从 try 里面的代码开始执行
    • 出现异常,就会跳转到对应的 catch 里面去执行
    • 执行完毕之后,程序还可以继续往下执行
  • 示例代码

public class ExceptionDemo01 {
	public static void main(String[] args) {
		System.out.println("开始");
		method();
		System.out.println("结束");
	}
	
	public static void method() {
		try {
			int[] arr = {1, 2, 3};
			System.out.println(arr[3]);
			System.out.println("这里能够访问到吗");
		} catch (ArrayIndexOutOfBoundsException e) {
			System.out.println("你访问的数组索引不存在,请回去修改为正确的索引");
		}
	}
}
  • 注意
  1. 如果 try 中没有遇到问题,怎么执行?
    会把try中所有的代码全部执行完毕,不会执行catch里面的代码
  2. 如果 try 中遇到了问题,那么 try 下面的代码还会执行吗?
    那么直接跳转到对应的catch语句中,try下面的代码就不会再执行了
    当catch里面的语句全部执行完毕,表示整个体系全部执行完全,继续执行下面的代码
  3. 如果出现的问题没有被捕获,那么程序如何运行?
    那么try…catch就相当于没有写.那么也就是自己没有处理.
    默认交给虚拟机处理.
  4. 同时有可能出现多个异常怎么处理?
    出现多个异常,那么就写多个catch就可以了.
    注意点:如果多个异常之间存在子父类关系.那么父类一定要写在下面

8. Throwable成员方法(应用)

  • 常用方法
    【JavaSE】Java基础语法(二十五):异常
  • 示例代码
略。。。

9. 自定义异常(应用)

  • 自定义异常概述

    当Java中提供的异常不能满足我们的需求时,我们可以自定义异常

  • 实现步骤
    定义异常类
    写继承关系
    提供空参构造
    提供带参构造


  • 代码实现
public class AgeOutOfBoundsException extends RuntimeException {
	public AgeOutOfBoundsException() {
	}
	
	public AgeOutOfBoundsException(String message) {
	
	super(message);
	}
}
  • 使用
public void setAge(int age) {
	if(age >= 18 && age <= 25){
		this.age = age;
	}else{
		//如果Java中提供的异常不能满足我们的需求,我们可以使用自定义的异常
		throw new AgeOutOfBoundsException("年龄超出了范围");
	}
}

【JavaSE】Java基础语法(二十五):异常文章来源地址https://www.toymoban.com/news/detail-464439.html

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

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

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

相关文章

  • 【JavaSE】java刷题——基础语法熟练应用

    通过本篇题目,可以让初学Java的小伙伴们更加熟练Java的基础语法~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~  题述:编写程序数一下 1到 100 的所有整数中出现多少个数字9 分两步 取个位上的9  有9 19 29……99 有10个 取十位上的9  有90 91 92 93…

    2024年04月17日
    浏览(36)
  • 【JavaSE】Java基础语法(十六):抽象类

    当我们在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了! 在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽 象类! 抽象类和抽象方法必须使用 abstract 修饰 抽象类中不一定有抽

    2024年02月07日
    浏览(40)
  • 【JavaSE】Java基础语法(十二):ArrayList

    集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 ArrayList : 可调整大小的数组实现 是一种特殊的数据类型,泛型。 怎么用呢 ? 在出现E的地方我们使用引用数据类型替换即可 举例:ArrayList, ArrayList 成员方法 : 案例需求

    2024年02月06日
    浏览(47)
  • 【JavaSE】Java基础语法(三十一):可变参数

    可变参数介绍 可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了 方法的参数类型已经确定,个数不确定,我们可以使用可变参数 可变参数定义格式 可变参数的注意事项 这里的变量其实是一个数组 如果一个方法有多个参数,包含可变参数,可

    2024年02月08日
    浏览(41)
  • 【JavaSE】Java基础语法(三十四):实现多线程

    是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 并行:在同一时刻,有多个指令在多个CPU上同时执行。 并发:在同一时刻,有多个指令在单个CPU上交替执行。 进程:是正在运行的程序

    2024年02月08日
    浏览(32)
  • 【JavaSE】Java基础语法(三十二):Stream流

    案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以\\\"张\\\"开头的元素存储到一个新的集合 把\\\"张\\\"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得到的集合 原始方式示例代码 使用Stream流示例代码 Stream流的好处

    2024年02月07日
    浏览(34)
  • 【JavaSE】Java基础语法(十三):Java 中的集合(十分全面)

    List (对付顺序的好帮⼿): 存储的元素是有序的、可重复的。 Set (注重独⼀⽆⼆的性质): 存储的元素是⽆序的、不可重复的。 Queue (实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。 Map (⽤ key 来搜索的专家): 使⽤键值对(key-value)存

    2024年02月10日
    浏览(32)
  • 【JavaSE】Java基础语法(三十三):File 一文详解

    File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也 可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的 File类的构造方法

    2024年02月06日
    浏览(46)
  • 初始Java篇(JavaSE基础语法)(5)(类和对象(上))

    个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 目录 面向对象的初步认知 面向对象与面向过程的区别 类的定义和使用  类的定义格式 类的实例化 this引用 什么是this引用? this引用的特性 对象的构造及初始化 如何初始化对象(的

    2024年04月08日
    浏览(34)
  • 初始Java篇(JavaSE基础语法)(6)(继承和多态)(上)

                                                            Java学习篇  个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 目录 继承篇  为什么需要继承? 继承概念 继承的语法 父类成员访问 super 子类

    2024年04月15日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包