异常
Exception:叫做异常,代表程序可能出现的问题。我们通常会用Exception以及它的子类来封装程序出现的问题。
运行时异常:RuntimeException及其子类,编译阶段不会出现异常提醒。运行时出现的异常
编译时异常:编译阶段就会出现异常提醒的。
异常处理:
1JVM默认的处理方式:把异常的名称,异常原因及异常出现的位置等信息输出在了控制台;
程序停止执行,下面的代码不会再执行了。
2自己处理(捕获异常):
格式:
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}
好处:可以让程序继续往下执行,不会停止。
注意:(1)如果try中没有遇到问题,怎么执行?会把try里面所有的代码全部执行完毕,不会执行catch里面的代码。因为只有当出现了异常才会执行catch里面的代码。
(2)如果try中可能会遇到多个问题,怎么执行?写多个catch与之对应。
细节:如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面;
在JDK7之后,我们可以在catch中同时捕获多个异常,中间用|进行隔开,表示如果出现了A异常或者B异常的话,采取同一种处理方案
(3)如果try中遇到的问题没有被捕获,怎么执行?相当于try……catch的代码白写了最终还是会交给虚拟机进行处理。
(4)如果try中遇到了问题,那么try下面的其他代码还会执行吗?不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体,但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理。
3抛出异常
throws:写在方法定义处,表示声明一个异常,告诉调用者使用本方法可能会有哪些异常
public void 方法()throws 异常类名1…{
…
}
编译时异常:必须要写
运行时异常:可以不写
throw:写在方法内,结束方法,手动抛出异常对象,交给调用者。方法中下面的代码不再执行了。
public void 方法(){
throw new NullPointerException();
}
异常中的常见方法
public String getMessage()
返回此throwable的详细消息字符串
public StringtoString()
返回此可抛出的简短描述
public void printStackTrace()
在底层是利用好System.err.println 进行输出把把异常的错误信息以红色字体输出在控制台上。
细节:仅仅是打印信息,不会停止程序运行。
Stream流
Stream流的作用:
简化集合,数组操作的API。Stream流结合了Lambda表达式。
Stream流的思想和使用步骤:
先得到集合或者数组的Stream流(就是一根传送带)。
把元素放上去。
然后就用这个Stream流简化的API来方便的操作元素。
集合获取Stream流的方式:通过调用stream()方法实现。
可以使用Collection接口中的默认方法stream()生成流
default Stream <E> stream() 获取当前集合对象的Stream流。
数组获取Stream流的方式:
public static <T> Stream(T[] array) 获取当前数组的Stream流。
public static <T> of Stream<T> of(T... values) 获取当前数组/可变数据的Stream流。