javase学习管理就从中间开始= =太基础的就没有笔记了啊

day30——异常

一、上节课回顾

java.util.Collections工具类:

1、线程同步

/* 首先你得有前面的ifelse这样的基础、当然还有基本的对象基础。
collection集合就理解为装对象的数组。访问对象就是访问名为对象名的地址。
那么集合存的就是对象的地址。记住大部分不是你自己写的对象都会重写tostring
你输出任何对象或者基本类型其实都是输出地址、不同的是会重写tostring。也就是说直接输出对象名就是对象名.tostring
static <T> Collection<T> synchronizedCollection(Collection<T> c) 
返回由指定集合支持的同步(线程安全)集合。 
static <T> List<T> synchronizedList(List<T> list) 
返回由指定列表支持的同步(线程安全)列表。 
static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) 
返回由指定地图支持的同步(线程安全)映射。 
*/
Collection<Object> c = Collections.synchronizedCollection(new ArrayList<>());
List<Object> list = Collections.synchronizedList(new ArrayList<>());
Map<Object, Object> map = Collections.synchronizedMap(new HashMap<>());

2、同时向容器中添加多个元素

/*
static <T> boolean addAll(Collection<? super T> c, T... elements) 
将所有指定的元素添加到指定的集合。 
*/
Collections.addAll(list,e1,e2,e3,e4...);

3、排序

/*
static <T extends Comparable<? super T>>
void sort(List<T> list) 
根据其元素的natural ordering对指定的列表进行排序。  
static <T> void sort(List<T> list, Comparator<? super T> c) 
根据指定的比较器引起的顺序对指定的列表进行排序。  

注意点:
List集合中的元素,要具有可比性,才能够进行排序sort(),比较大小。
Comparable接口,Comparator接口。
*/
ArrayList<Integer> list2 = new ArrayList<>();
		Collections.addAll(list2, 3,1,6,4,2,7);
		System.out.println(list2);//list集合本身是添加的顺序
		
		//集合排序
		Collections.sort(list2);
		System.out.println(list2);
		
		Collections.sort(list2, new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				return o2-o1;
			}
		});
		System.out.println(list2);
		

4、将集合中的元素进行翻转:

/*
static void reverse(List<?> list) 
反转指定列表中元素的顺序。  
*/
//list集合的翻转:元素颠倒过来。
Collections.reverse(list2);

5、将集合中元素随机

/*
随机洗牌
static void shuffle(List<?> list) 
使用默认的随机源随机排列指定的列表
*/
		//让集合中的元素,随机的存储位置
		Collections.shuffle(list2);
		System.out.println(list2);

6、替换

/*
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) 
将列表中一个指定值的所有出现替换为另一个。 
*/
Collections.replaceAll(list2, 1, 100);
System.out.println(list2);

7、统计指定元素在集合中出现的次数

/*
static int frequency(Collection<?> c, Object o) 
返回指定集合中与指定对象相等的元素数 
*/
int count = Collections.frequency(list2, 6);
System.out.println(count);

二、本节课内容

2.1、异常

生活中的异常:

生活中面对各种异常:
1、头疼
	去医院-->看大夫
	感冒:吃药治病
	喝酒喝大了:回家睡一觉
	
对症下药
2、撞车
	道路拥挤,交警处理。。。

对于异常的处理:因为原因不同,有不同的处理方式。

异常的概念:

异常:Exception
概念:在程序执行的时候,代码中产生的不正常事件,导致程序无法正常的执行。

程序的执行流程:

step1:JVM创建一个主线程,调用主函数,程序的入口:main()...
step2:按照main方法中的内容,从上向下执行,逐行执行
	创建对象。。。
	分支语句。。。
	循环语句。。
	方法调用。。。。。
step3:当main方法中的所有代码全部执行完毕,程序正常结束了。JVM退出了。

程序的执行过程中,产生了异常,由JVM负责创建该类型的异常对象并抛出,打断程序的执行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2eqgd1Vd-1587987446448)(img\1异常的产生.png)]

2.2、异常的分类
Throwable类:可抛出的。
|————Error:错误。(系统级别的问题,程序员解决不了)
|————Exception:异常。(程序员需要解决的)
Exception:异常
|————受检异常,编译在编译程序时候,能够检查出来的异常。外部的因素导致的异常。
	IOException:IO异常
	FileNotFoundException:文件不存在的异常
	SQLException:数据库异常
	。。。。
	必须处理,程序才能运行。

|————非受检异常,又叫运行时异常(RuntimeException)。编译器在编译程序的时候,不检查。运行时候可能暴露出来的异常。代码中的逻辑问题导致的异常。
	ArithmeticException:算术异常
	NullPointerException:空指针异常
	ClassCastException:类转型失败异常
	ArrayIndexOutOfBoundsException:数组下标越界异常
	StringIndexOutOfBoundsException:字符串下标越界异常
	InputMismatchException:类型不匹配异常
	NumberFormatException:数字格式化异常
	。。。。
	

step1:编写源代码

step2:编译器进行编译:产生字节码文件

​ javac HelloWorld.java—>HelloWorld.class

step3:解释器去执行。

​ java HelloWorld

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qA2mvXpC-1587987446451)(img\Exception的继承结构.png)]

2.3、捕获异常

捕获的语法结构:

try{
	//try语句块中,有可能产生异常的代码,尝试着执行
}catch(异常类型1 e){
	//对异常处理
}catch(异常类型2 e){
	//
}...
finally{
	//此处的操作是可选的,
	这里的代码,一定会被执行的。。
}

解释说明:关键字

  • try:尝试的意思,尝试着执行代码块中的代码
  • catch:抓取,捕获,捕获异常对象。。
  • finally:最终的。

执行流程:

1、先尝试着执行try语句块中的代码,如果没有产生异常,忽略catch语句。继续向下执行。

2、如果产生异常了,那么就会跳出try语句,而去匹配catch语句,和哪个catch匹配上了,就进入到catch语句中去执行。

3、一个try语句可以配合多个catch,产生异常时,会从上向下匹配这些异常类型。和哪个匹配上了就执行哪个catch。小类型的异常写前面,大类型的异常写后面。

4、如果有finally语句,无论是否产生异常,都会执行finally里面的代码。该语句块是可选的。一般用于资源的释放,文件的断开,临时文件的删除。。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CiHV2MDF-1587987446454)(img\2trycatch分析.png)]

2.4、抛出异常

throws关键字,该方法不处理异常,抛出,交给调用处进行处理异常。

public void test()throws 异常类型1,异常类型2...{

}

表示该方法不处理异常,向外抛出,交由调用处进行处理。受检异常,调用处就必须处理,非受检异常调用处可以暂时不处理。

【扩展内容】

1、throw关键字,主动抛出一个异常对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值