提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
1.概念:Java程序运行期间出现错误,发生的不正常行为是异常
2.Java中的异常都派生于Throwable类,可以分为两大类:
Java的容器主要分为2个大类,即Collection和Map。Collection代表着集合,类似数组,只保存一个数字。而Map则是映射,保留键值对两个值
前言
提示:浅浅自学一波java异常类 常用类 容器 泛型
多有疏漏,敬请指出Thanks♪(・ω・)ノ
一、异常类
1.概念:Java程序运行期间出现错误,发生的不正常行为是异常
2.Java中的异常都派生于Throwable类,可以分为两大类:
Error是java程序运行中不可预料的异常情况,
Exception是java程序运行中可预料的异常情况,
Exception错误也分为两类:
- 运行时异常,也成为非检查型异常
- 非运行时异常,也成为检查时异常
由编译错误导致的异常属于RuntimeException异常。常常包括以下问题:
- 错误的强制类型转换
- 数组的越界访问
- 指针指向空指针,访问空指针
3.try-catch-finally语句
try{ //代码段 }
catch(异常的类名 对象名){ //代码处理段 }
........
catch(异常的类名 对象名){ //代码处理段 }
finally{ // 代码段}
其中try和catch必须同时出现 ,但是finally可以不出现
try中的语句是必须运行的,在try中可能会有异常的抛出
catch中接受try中抛出的异常,可能没有异常,则不执行catch的代码
finally是必须执行的代码段,不论有没有异常
catch可以有多个,用来处理不同类型的异常
从中可以看到try-catch-finally语句是可以嵌套的,即可以有异常中的异常出现
try{
try{ //代码段 }
catch(异常的类名 对象名){ //代码处理段 }
finally{ // 代码段}
}
catch(异常的类名 对象名){ //代码处理段 }
........
catch(异常的类名 对象名){ //代码处理段 }
finally{
//代码段
try{ //代码段 }
catch(异常的类名 对象名){ //代码处理段 }
finally{ // 代码段}
}
4、throw 和 throws 用法
throw抛出异常
如果需要在程序中自行抛出异常,则应使用 throw 语句,throw 语句抛出是一个异常实例,而且每次只能抛出一个异常实例。
try{ //代码段}
catch(Exception e){ throw e...} ......
catch(SQLException e){
throw new ServleException("error"+e.getMassage());
}
//可以改写为
catch(SQLException e){
var es=new ServleException("error");
es.initCause(e);
throw es;
}
throws:
不用写出具体的异常处理方法,而是将其传播,但必须在方法的首部添加一个 throws 说明符,提醒调用者这个方法可能抛出的异常
虽然这个方法比较简洁,但是有几个要注意的点:如果编写一个方法覆盖超类方法,而这个超类方法没有抛出异常,就必须捕获你的方法中出现的每一个检查型异常
不允许在子类的throws中出现超类中方法没有出现的异常
throws和throw的区别
throws用于异常方法的声明,throw在方法体内使用
throws后面是异常类型,可以有多个;throw后面是异常的实例对象,只能有一个
throws用来声明,由调用者处理,不一定会出现异常;throw是出现异常时手动来结束方法的,执行了throw一定会出现异常
原文链接:https://blog.csdn.net/m0_51783792/article/details/124039534
5.自定义异常类
为什么要自定义异常类?
当我们在输入成绩,输入工资,取款的时候,往往都有一个范围,而这个范围不是JVM能够识别的,因此在输入的时候就容易出错,因此在这些时候JDK中的异常无法满足我们的需求,我们只能自己定义异常类。
自定义异常类的使用步骤如下:
1、自定义异常类继承Exception类
/**
* 自定义异常类
*/
public class MyException extends Exception {
//异常信息
private String message;
//构造函数
public MyException(String message){
super(message);
this.message = message;
}
//获取异常信息,由于构造函数调用了super(message),不用重写此方法
//public String getMessage(){
// return message;
//}
}
2、在要抛出异常的函数使用throws关键字
/**
* 在需要抛出异常的地方使用异常类
*/
public class UseMyException {
private String name;
private String password;
public UseMyException(String name,String password){
this.name = name;
this.password = password;
}
public void throwException(String password) throws MyException{
if (!this.password.equals(password)){
throw new MyException("密码不正确!");
}
}
}
3、测试,使用try-catch处理异常
/**
* 测试异常
*/
public class TestException {
@org.junit.Test
public void test(){
UseMyException ex = new UseMyException("admin","123");
try{
ex.throwException("1234");
}catch (MyException me){
System.out.println("MyException:"+me.getMessage());
}
}
}
原文链接:https://blog.csdn.net/xxujia/article/details/81435128
二、常用类
原文链接:Java的八大常用类-CSDN博客
包装类、String类、StringBuffer和StringBuilder类、Date类和DateFormat类、Calender类日期类、
Math类和Random类、枚举类
原文链接:Java:常用类_java常用类_天宇阿的博客-CSDN博客
一、Object类
1、概述
1、hashcode()
2、toString()
3、clone()
4、getClass()
5、notify()
6、wait()
7、equals()
8、finalize()
9、Objects类
9、面试问题
二、Math类
三、Random类
四、File类
1、构造方法
2、添加文件
3、查看文件
4、修改文件
5、删除文件
五、包装类
1、装箱与拆箱
3、自动装箱拆箱
4、基本类型与字符串转换
5、整数缓冲区
六、Date类
1、Date
2、SimpleDateFormat
3、Calendar
4、Timestamp
七、String类
可变字符串
面试问题
八、BigDecimal
九、BigInteger
十、System
十一、正则表达式
十二、编码表
三、容器
Java的容器主要分为2个大类,即Collection和Map。Collection代表着集合,类似数组,只保存一个数字。而Map则是映射,保留键值对两个值
首先提一下List Queue Set Map 这四个的区别。
List(对付顺序的好帮手): 存储的元素是有序的、可重复的。
Set (注重独一无二的性质):存储的元素是无序的、不可重复的。
Queue (实现排队功能的叫号机):按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。
Map (用 key 来搜索的专家) :使用键值对(key-value)存储,类似于数学上的函数 y=f(x),“x” 代表 key,“y” 代表 value,key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值。
原文链接:https://blog.csdn.net/qq_36787616/article/details/123604120
四、泛型
定义:泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法
目的:可以建立具有类型安全的集合框架,如链表、散列映射等数据结构
原文链接:Java泛型详解,史上最全图文详解_mikechen的互联网架构的博客-CSDN博客
总结
蓝旭第二次预习