Java:异常,常用类(file,math,random,date,calendar)

异常

定义:指非正常情况的错误【异常体系的最终父类是object】

函数内部的问题

  1. 函数自身内部解决: return 正常结果
  2. 函数将问题反馈给调用者:throw 异常对象

a. error 是系统级别的异常,产生的原因有:系统崩溃,虚拟机错误,内存溢出等
b. 编译时异常:编译器强制要求我们处理的异常,通常有:IOException、SQLExption。
不处理无法通过编译,处理的方法有Try{} catch(){} 、throws
c. 运行时异常:程序在运行中产生的异常,常见的异常有:Try{} catch(){}

Throwable 异常

throwable :是所有错误和异常的父类
error :【错误】 程序员无法通过代码解决的问题
Exception :【异常】 是程序员可以通过代码解决的问题

异常的分类特点

运行时异常(RunTimeException):非检查异常,代码在运行过程中,可以处理也可以不处理的异常

名称对应提示
数组角标越界ArrayIndexOutofBoundsException
空指针异常NullPointerException
栈溢出异常StackOverFlowError
堆溢出异常OutofHeapError
类型转化异常ClassCastException
数字异常ArithmeticException
数据转换异常NUmberFormatException

非运行时异常(非RunTimeException):检查异常,是Java中较为常见的异常,我们需要对其进行处理的异常(对安全的一些隐患进行预)

抛出异常:JVM抛throw抛
一、JVM对异常的处理:

概述:当JVM发现有异常产生,就会寻找catch里的遗产 ,匹配了就调用catch里面的代码进行处理

注意:

  1. try内部的代码越少越好
  2. try内部不进行任何处理
  3. catch里面的异常对象越明确越好,级别越低越好
  4. 使用第三种格式时,多个异常间必须是并列关系
  5. catch中只能处理,不能有输出语句
补充try{}与catch{}【用户自己处理出现的异常】
**语句格式1:**

try{
里面的代码有可能会有问题
}catch{
如果有问题,开始处理
}
例如:

try {
	Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e) {
	e.printStackTrace();
}

语句格式2:
try {
可能出现问题的代码 ;
}catch(异常名1 变量名1){
对异常的处理方式 ;
}catch (异常名2 变量名2){
对异常的处理方式 ;
}
注意:异常对象 n >= 异常对象2 级别 >= 异常对象1

try {
		//System.out.println(1/0);
		int[] arr = {1,2,3};
		System.out.println(arr[100]);
	}catch(ArithmeticException e) {
		System.out.println("除数不能为零");
	}catch(ArrayIndexOutOfBoundsException e) {
		System.out.println("数组越界");
	}

语句格式3: 在jdk7后,可以并列处理
try{
肯有问题的代码
}catch(异常对象 1 | 异常对象 2 | 异常对象 n 变量名1){
处理问题的代码
}

try {
	System.out.println(1/0);
	int[] arr = {1,2,3};
	System.out.println(arr[100]);
	}catch(ArithmeticException | ArrayIndexOutOfBoundsException e) {
		System.out.println("除数不能为零");
	}
二、throws:

让别人处理,在代码中表现为,谁调用谁处理,可以逐级向上抛
throws后面跟异常的类名,可以多个异类名,用逗号隔开
public static void main(String[] args) throws ClassNotFoundException {
Class.forName(“com.mysql.jdbc.Driver”);
}

public static void main(String[] args) throws ArithmeticException,ArrayIndexOutOfBoundsException {
	System.out.println(1/0);
	int[] arr = {1,2,3};
	System.out.println(arr[100]);
}

throw和throws的区别:
概述:
throws:使用时在方法上将异常抛给调用者,谁调用谁处理
throw:在功能方法内部出现某种异常,程序不能继续运行,需要跳转时把异常对象抛出
区别:

  1. throws用在方法声明后面,跟的是异常类名;throw用在方法体内,跟的是异常对象名
  2. throws可以跟多个异常类名,用逗号隔开;throw只能抛出一个异常对象名
  3. throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,一旦执行则表示一定抛出了某种异常

编译时异常和运行时异常的区别:
所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译时异常

编译时异常: Java程序必须显示处理,否则程序就会发成错误,无法通过编译
运行时异常: 无需显示处理,也可以和编译时异常一样处理

异常的应用:
题目:创建一个文件,先判断一下 这个file是否存在,那么如果不存在的话 创建一个新的文件,如果存在的话我们打印一下文件的字节

public static void main(String[] args) {
		try {
			File a = new File("C://xin/one.java");
			if (!a.exists()) {
				// 获取其父类路径,构建相应的文件
				File file1 = a.getParentFile();
				// 创建文件,mkdirs()是创建多个文件夹
				file1.mkdir();
				// 构建相应的文件
				a.createNewFile();
			} else {
				System.out.println(a.length());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

常用类

路径:绝对路径,相对路径

绝对路径: 文件的全路径(从盘符一直到文件的路径 c://abc/html/1.html)
相对路径: 通常情况下是指一个文件,相对寻找另一个文件的路径描述(1.html)

eg:
C://abc/html/1.html
C://abc/image/1.png
相对路径应该如何去描述:…/imgae/1.png
…/表示上一级路径
…/…/表示上上层路径

关于FILE类的用法

File Java.io.file中
前缀:
在File中有个前缀,通常用于表示路径之间的关系符号“/”
在Linux系统中使用“/”
Windows 系统中使用“\”第一个\表示的是转移字符

File中的字段:
separator 表示“\”,通常使用这个属性来连接数据

构造方法:
String为类型的(常用) File(String)
两个String类型的 File(String )

函数用途
file.getPath();返回文件的相对路径名称
file1.compareTo(file2);两个文件之间的比较,按照字典数据比较路径(返回数字)
file.delete();删除文件
file1.equals(file2);比较两个file是否相同
file.exists();判断该文件是否存在
file.getAbsolutePath();返回绝对路径,返回file类型
file.getName();返回文件名
file.getParent();返回父路径
file.isAbsolute();判断file是否是一个绝对路径
file.renameTo();重命名
file.ifHidden();判断文件是否是隐藏文件
			//输出file的字节码长度
			System.out.println(file.length());
			//获取file的相对路径名称
			System.out.println(file.getPath());
			//按照字段顺序比较路径
			System.out.println(file.compareTo(file1));
			//删除文件
//			boolean bRet = file.delete();
//			System.out.println(bRet);
			// 比较两个file是否相同
			System.out.println(file.equals(file1));
			//返回绝对路径getAbsolutePath 返回String类型 getAbsoluteFile 返回file类型
			System.out.println(file.getAbsolutePath());
			//返回文件名称
			System.out.println(file.getName());
			//返回父路径
			System.out.println(file.getParent());
			//判断file是否是一个绝对路径
			System.out.println(file.isAbsolute());
			//判断file是否是一个目录
			System.out.println(file.isDirectory());
			//判断file是否是一个文件
			System.out.println(file.isFile());
			//判断文件是否是一个隐藏文件
			System.out.println(file.isHidden());

MATH类:包含基本的数字操作

表示Java的数学相关用法,该类被修改

函数用途
abs(number);方法表示绝对值
cbrt(number);表示立方根
sqrt(number);表示平方根
toDegrees(double angel);弧度转角度
toRadians(double angel);角度转弧度

static关键字:

  1. 用static声明的成员变量-静态成员变量 类名调用
  2. 生命周期和类相同 被类的所有实例共享
  3. 在类载入时被初始化
  4. static成员变量只有一份
  5. 静态变量不能访问非静态成员,非静态成员可以访问静态成员

RANDOM伪随机数

包名:Java.util
构造方法:2个(无参有参)

	int index = rand.nextInt(result.length);
    System.out.println(result[index]);

DATE时间类型

包名:Java.util.Date 表示时间(表示特定的时间,精确到毫秒)
创建Date表示当前时间
Tue Feb 11 15:54:17 CST 2020
星期 月份 日期 时间 市区 年份

date.getTime(); 获取的毫秒数

直接创建对象表示获取系统的时间
一半用getTime记录时间的毫秒数,通过创建Date对象传递毫秒数来记录具体的时间

CALENDAR日期类型

calendar是一个抽象类
抽象类特点:
必须要有实现子类 因为不是直接实例化
抽象类不一定有抽象方法,有抽象方法一定有抽象类
注意:Date和Calendar以及String之间的时间转化问题

	//获取当前系统的时间
	Calendar  c =  Calendar.getInstance();	
	System.out.println(c);

SIMPLEDATEFORMAT

Date和Calendar 格式化和分析日期的具体类

		Calendar  c =  Calendar.getInstance();
		System.out.println( c );		
		Date date = c.getTime();		
		System.out.println(date);		
		SimpleDateFormat sdf = new SimpleDateFormat();
		
		//把date类型转换成String 
		String dateResult = sdf.format(date);		
		System.out.println(dateResult);		
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		System.out.println(sdf1.format(date));

常见格式:
yy-MM-dd hh:mm:ss a(AM/PM) E(星期)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值