JAVA13-异常、线程、同步、等待与唤醒案例、线程池、Lambda表达式

1.异常

      异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在

1.1.Java程序中的意思就是:

1)异常** :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
2)在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。
3)异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.

1.2.异常体系-java中异常本身是一个类,有一个顶级的类 Throwable(可扔的)

      异常机制其实是帮助我们**找到**程序中的问题,异常的根类是`java.lang.Throwable`,其下有两个子类:`java.lang.Error`与`java.lang.Exception`,平常所说的异常指`java.lang.Exception`

**Throwable体系:**说明
1)Error**:严重错误Error,无法通过处理的错误,只能事先避免,好比绝症
2)Exception**:表示异常,也称之为编译器异常(写代码出现的),异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎,Exception**:还有一个RuntimeException子类(也叫运行期异常) 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。相当于程序遇到小问题,处理掉就可以继续执行。

1.3.1处理编译器Exception异常的两种做法:

1).抛出异常,交给虚拟机处理,就如同使用使用日期格式化这个类,缺点是一旦parse值与我们格式化的模式不一致(比方说少dd日子),就会出错parse解析异常,且程序不会继续执行

parse方法是将字符串的日期,解析为Date格式的日期。

  1 public class Demo05StaticField {
  2     public static void main(String[] args) throws ParseException {
  3         //        Exception**:表示异常,也称之为编译器异常(写代码出现的),异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处
  4         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  5         Date date = sdf.parse("1999-09-11");// 此处出现的错误,一般抛出去throws ParseException
  6         System.out.println(date);
  7     }
  8 }

2.)抓取异常:try{可能出现的异常代码块}catch{异常的处理机制}程序会继续执行


image

    抓取异常之运行期异常,RuntimeException,比方说取索引数据越界

try{

可能出现的异常代码块

}catch(Exception e){

异常的处理机制}程序会继续执行

}


  1 
  2 public class Demo05StaticField {
  3     public static void main(String[] args)  {
  4         int[] arr = {10,20,30};
  5         System.out.println(arr[3]);// 异常java.lang.ArrayIndexOutOfBoundsException: 3
  6         // 如何处理呢
  7         try{// 可能出现异常的代码
  8             System.out.println(arr[3]);
  9         }catch(Exception e){// 异常处理的逻辑
 10             System.out.println(e);
 11 
 12         }
 13         System.out.println("后续代码");
 14     }
 15 }

1.3.2处理Error错误的方式:必须修改源代码,

比方说定义数组arr空间过大,出现ava.lang.OutOfMemoryError异常

如果赋值再乘以1000,更多会出现NegativeArraySizeException异常

  1 public class Demo05StaticField {
  2     public static void main(String[] args)  {
  3         int[] arr = new int[1000*1000*1000];
  4         System.out.println("后续代码");
  5     }
  6 }

1587890505(1)

1.3.4 异常产生的过程进行解析

1587891574(1)


2 异常的处理

java中异常处理的5个关键字  try catch finally throw throws










posted @ 2020-04-26 21:52  芒果侠  阅读(164)  评论(0编辑  收藏  举报