IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> JavaSE——基础知识回顾之异常 -> 正文阅读

[人工智能]JavaSE——基础知识回顾之异常

文章目录



前言

本次任务难度比较简单,属于副知识,主要了解Java中的异常机制如何分类,如何产生,乃至如何自定义与解决


提示:以下是本篇文章正文内容,下面案例可供参考

一、知识思维导图

在这里插入图片描述

一、Java中的“异常”是什么?

(1)、异常的概念:

程序在运行的过程中产生的特殊情况,导致程序因意外而结束掉进程。如果不及时处理的话将会出现不必要的损失。

(2)、异常的分类:

Throwable(位于java.lang包) 是异常(Exception)与错误(Error)的超类,即根类,在Throwable下继承有子类“Error” 与 “Exception”,然而“Exception”之下分为两种异常,其一为“RuntimeException”(运行时异常)与“CheckedException”(受检式异常),对于“RuntimeException”它的特点是可以处理也可以不处理,可以由JVM来进行处理,然而“CheckedException”是必须处理的。

(3)、“Error”与“Exception”的区别

区别:
“Error”是运行后的错误,一般发生于JVM、硬件、执行逻辑错误,或者是一些重大的问题导致的程序崩溃无法手动处理
“Exception”是程序在运行或者是配置中产生的问题,可以处理


三、异常的产生

(1)、自动抛出的异常

当程序在运行时遇到不符合规范的代码或者结果的时候会产生异常,抛出异常信息与路径。

(2)、手动抛出的异常或是自定义异常

通过语法 throw new 异常类型(“实际参数”)的方式来抛出异常,常用于自定义异常的时候

(3)、产生异常的结果

产生异常的结果实质上类似于遇到“return”语句,只不过“return”语句是在程序正常的情况下进行结束并返回的,然而异常的结果是在程序无法正常结束并返回的结果。最后导致程序因异常而终止。

四、异常的传递:

异常的传递:按照方法的调用链反向传递,如始终没有处理异常,最终会有JVM进行默认异常处理(打印对翟跟踪信息 e.getMessage , printStackTrace())
受查异常:throws 声明异常,修饰在方法参数列表后端。
运行时异常:因可处理可不处理,无序声明异常。

五、异常的处理:

(1)、处理异常的基本语法(熟悉,若有不懂可以去B站上多看看)

//语法如下:
try{
//可能出现异常的代码
}catch(Exception e){
//异常处理的相关代码,如:getMessage() 、printStackTrace()
}finally{
//无论是否出现异常,都需执行的代码结构,常用于释放资源
}

注意: 在以上结构中不管以后是否需要用到finally 都请加上它,这个东西非常重要,请将它作为一个习惯吧。

(2)、常见的异常处理结构

try{} catch{}
try{} catch{}catch{}
try{} catch{} finally{}
try{} catch{} catch{} finally{}
try{} finally{}
注意:多重catch,遵循从子(小)到父(大)的顺序,父类异常在最后

六、自定义异常(通过案例来理解)

(1)、通过自定义异常(SexException与AgeException)来测试创建对象的错误

//创建Person类
package com.qf.chapter13_1;

public class Person {
	private String name;
	private String sex;
	private int age;
	public Person() {
		// TODO Auto-generated constructor stub
	}
	public Person(String name, String sex, int age) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) throws Exception {
		if(sex.equals("男")||sex.equals("女")) {
			this.sex = sex;
		}else {
			throw new Exception("性别不符合要求");
		}
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) throws Exception {
		if(age>0&&age<=120) {
			this.age = age;
		}else {
			//抛出异常
			throw new Exception("年龄不符合要求");
		}
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}
	
}

//创建年龄异常类
/**
 * 自定义异常
 * (1)继承Exception 或子类
 * (2)添加构造方法
 * @author 雍仲杨
 *
 */
public class AgeException extends RuntimeException{

	public AgeException() {
		super();
		// TODO Auto-generated constructor stub
	}

	public AgeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
		super(message, cause, enableSuppression, writableStackTrace);
		// TODO Auto-generated constructor stub
	}

	public AgeException(String message, Throwable cause) {
		super(message, cause);
		// TODO Auto-generated constructor stub
	}

	public AgeException(String message) {
		super(message);
		// TODO Auto-generated constructor stub
	}

	public AgeException(Throwable cause) {
		super(cause);
		// TODO Auto-generated constructor stub
	}
	
}

//创建性别异常

public class SexException extends RuntimeException {

	public SexException() {
		super();
		// TODO Auto-generated constructor stub
	}

	public SexException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
		super(message, cause, enableSuppression, writableStackTrace);
		// TODO Auto-generated constructor stub
	}

	public SexException(String message, Throwable cause) {
		super(message, cause);
		// TODO Auto-generated constructor stub
	}

	public SexException(String message) {
		super(message);
		// TODO Auto-generated constructor stub
	}

	public SexException(Throwable cause) {
		super(cause);
		// TODO Auto-generated constructor stub
	}	
}
//创建测试类
public class TestPerson {
	public static void main(String[] args) throws Exception{
		Person yaoguai=new Person();
		yaoguai.setAge(20);
		yaoguai.setSex("妖");//这里绝对会报错  SexException
		System.out.println(yaoguai.toString());
	}
}

(2)、异常方法重写时需要注意的问题

带有异常声明的方法的重写
方法名、参数列表、返回值类型必须和父类相同
子类访问修饰符合父类相同或是比父类更宽
子类中的方法,不能排除比父类更多、更宽的异常

总结

本次任务如上所示,重点的话更偏向理论部分,个人建议重点账务异常的传递和处理那一块,前面的异常出现内容熟记便可

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:32:20  更:2021-08-15 15:37:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:36:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码