A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2018/11/16  9:05   就业day05
推荐: 并发编程网     书堂老师
1 异常体系(书堂老师)
Throwable
    Error类: 不应该被程序员处理的问题(虚拟机的错误,内存不足)
    Exception类:可以被处理的(感冒发烧等)
           RuntimeException  运行时异常
            其他类型:编译期异常
异常分类:
    编译期异常:
1.       继承关系中, Exception和除了RuntimeException体系中的异常类,都是编译期异常
2.       编译期在写代码的时候会有编译错误,只有当处理完才能编译通过
ParseException    IOException
        运行时异常:
1.       继承关系中,只要是RuntimeException及其子类都是运行时异常。
2.       编写代码的时候不会出现,只要运行的时候才会出现
注意事项:
    异常的本质其实就是异常类创建对象并抛出。
编译期异常在编译期会有编译错误, 但是不是意外这你的代码已经错了,也不会在编译期产生异常对象。
    只是需要我们对可能发生的异常做一个预处理
两种异常区别:
    编译期异常要求我们在编译时期必须(预)处理。(对可能出现的问题,必须先来一个预处理方案)
    运行时异常不需要预处理
    除了以上两点区别,其他的使用编译期异常和运行时异常相同的
       // 需求:编写代码,产生5个异常       异常产生会中断处理
// 解析异常,空指针异常, 算数异常, 数组索引越界异常, 类型转换//异常, 编译期异常(编写异常), 解析异常,并发修改异常等等。
      
      
      异常产生过程解析(分析异常是怎么产生的, 如何处理异常)【自】
            方法异常-à抛给主函数(main)处理-à抛给JVMJVM处理做两件事:
1.    把异常对象(内容,原因,位置)以红色字体打印在控制台
2.    终止当前正在执行的Java程序-à中断处理
异常的产生: throw关键字)
throw关键字自己手动抛出异常
我们自定义功能,如果功能的使用者, 使用有误, 这个时候我们应当通过产生异常的方式,告知方法的调用者使用有误。
异常的处理:
1.       让别人处理(方法的调用者), 默认方式
将异常对象声明抛出, 抛给方法的调用者
格式:
    在方法参数后抛出:throws 异常类型
      注意:
1)对于运行时异常, 默认就会把异常抛给方法的调用者
              对于编译期异常, 异常抛出是一种异常的处理方案, 可以使程序编译通过,不再产生编译错误。
2)如果方法中有可能产生的异常类型不止一种, 可以抛出多个异常类型用逗号隔开,还可以抛出多个异常的父类型
       throws 是异常的处理方式的一种, 就是把产生的对应异常抛给方法的调用者
       throw:  手动产生异常对象
2.try…catch自己处理
格式:
    Try {
       // 可能出现异常的代码
}  catch(异常类型 变量名)  {
   // 处理异常的逻辑
}
流程:
    1)当try中代码出现异常, 产生异常对象, 将异常对象和catch括号中的异常变量进行匹配, 如果可以匹配上, 则把对象赋值给异常的变量,catch中代码会执行, 异常则已经处理完毕, try catch后续代码也能正常执行
2)如果异常类型不能匹配上,则try…catch捕获异常失败, 此时异常和没处理, 则会抛给方法的调用者
            编译期异常,只是比运行时异常多一个强制性要求,必须先给出预处理方案, 只要代码正常,异常对象就不好产生。 类型得匹配
         
多个异常处理方式有三种:
//1每一个异常一个try  catch处理
//2多个异常的处理: 一个try多个catch
            /*
               执行流程:
                  如果try中的代码产生异常了,会讲异常信息封装Wie一个异常对象,跟catch中的异常类型进行匹配,如果匹配上则会将异常对象赋值给对应的异常变量, 并执行对应的catch大括号中的逻辑, 执行完后则整个try  catch就结束了   没有第一个没有匹配上会有上往下去匹配
                   只会和其中一个catch匹配上
*/
            // 3  还可以:直接将多个可能出现异常的代码放入一个try中, catch多个异常  父类型
              // 实际开发中: 将异常信息写入错误日志
           注意:
               如果多个catch有子父类关系, 子类的异常类型的catch必须放在父类的前面, 父类型会包含子类型
在子父类中,子类重写了父类的方法
1.       子类可以抛出任意的运行时异常
2.       (编译期异常)如果子类中需要抛出的异常类为编译期异常
如果父类没有抛出,则子类也不能抛
并且, 子类中抛出异常的类型,必须是父类抛出异常的子类型(或与父类抛出的异常类型相同)
                子类(抛出)的异常不能大于父类的异常
                父类不能抛异常, 则子类也不能抛异常
有时候我们需要某些代码在任意情况下都需要被执行,这个时候, 我们需要用到一个结构
格式:
    Try {
       // 可能出现异常的代码
}  catch(异常类型 变量名)  {
   // 处理异常的逻辑
   return;  // 在方法结束之前, 可以留下遗言   return 可以跳出本方法。  一// 般不这样写
} finally {
   // 任意情况下, 此处代码都会执行
}
       System.exit(0); // 终止JVM运行, 则后续任何代码都不会执
                  // 匹配上一个catch就运行结束
Throwable类中的功能:
Public StringgetMessage(): 获取异常的描述信息
Public String toString(): 获取异常的描类型和异常描述信息
Public StringprintStackTrace(): 打印异常的跟踪信息并输出到控制台。
自定义异常
    什么时候使用自定义异常
1.       自己写代码,别人用, 但是别人用错了(如参数错误),则可以抛出一个异常告知方法的调用者
2.       有的时候, java提供的异常类不够用, 我们定义的异常会更见名知意
3.       定义一个类,继承异常父类
4.       定义两个构造方法,一个空参,一个带字符串参数, 分别调用父类的对应构造
产生异常:
    在需要产生异常的位置: throw new 异常类型(异常的原因)
应用场景:
        定义一个方法,检测分数是否合法, 如不合法, 抛出异常
        需求:
1.       定义一个类,继承异常父类
// 如果想定义的异常是编译时期异常, 应继承Exception
// 如果想定义的异常是运行时期异常, 应继承RuntimeException
2.       定义两个构造方法, 一个空参,一个带字符串参数, 分别调用父类的对应构造
// 产生异常对象的时候,传递的字符串, 本质就是给异常对象一些异常信////息,产生异常的原因
       注意事项:
           如果产生的异常是编译期异常,则需要在产生异常所在方法上, 手动声明抛出异常
04 多线程
    推荐: 并发编程网     书堂老师
并发:交替执行,CPU会在多个线程间进行高速的切换,在某一个时刻其实只有一个线程执行。在同一时间内发生的事(或其他的事物)  例如:睁眼, 穿衣服, 玩手机
并行同时执行, 需要多核CPU才能实现。在同一时刻发生: 听课,看屏幕
进程:一个正在运行的应用程序
线程:进程中一个执行单元(执行路径)
Java程序的运行,当我们点击运行按钮的时候, 则JVM会帮我们开启一个main线程,再调用main方法去执行代码
thread 线程的意思, Java提供了一个类Thread,可以让我们手动开启线程
多线程的实现(****
开启线程的方式1
1.       定义类, 继承Thread
2.       重写run方法
3.       创建Thread的子类
4.       调用start方法开启线程
Thread类常用功能:
    void SetName(String name)
    String getName()
// 在run方法中应该定义后期开启线程后需要执行的任务
               JVM开启了一个main线程然后调用main方法
                Start()开启新线程     
                   当新线程被开启后, 会主动调用run方法
                   子类重写了run方法,具体执行的就是子类的代码
                CPU单核:在两个线程间高速的切换任务,交替执行(有随机性 高速运行)
在火车上多个人排队上一个卫生间: 并发
    并发:交替执行
    并行:同时执行
            电影院中,大家一起看电影: 并行
            进程:公司
            线程:公司中的员工
    一个进程中至少要有一个线程
Thread常用功能:
    1. publicString getName() 获取当前线程的名称
    2. publicvoid setName(String name) 设置当前线程的名称
    3. publicstatic void sleep(long mls) 让当前正在执行此代码的线程睡指定毫秒值
    4. publicstatic Thread currentThread() 获取正在执行此代码的线程
        Java.lang.Throwable:类是java语言中所有错误或异常的超类(或父类)。【参视】
            Exception编译期异常, 进行编译(写代码)java程序出现的问题
        异常产生过程解析(分析异常是怎么产生的, 如何处理异常)
            方法异常-à抛给主函数(main)处理-à抛给JVMJVM处理做两件事:
1.把异常对象(内容,原因,位置)以红色字体打印在控制台
2.终止当前正在执行的Java程序-à中断处理
        1.5 05_throw关键字
            作用:
                 可以使用throw关键字在指定的方法中抛出指定的异常
            使用格式:
                 Throw new xxxException(“异常产生的原因”);
            注意:
1.      throw关键字写在方法内部
2.      throw关键字后边new对象必须是Exception或Exception的子类对象
3.      throw关键字抛出的指定的异常对象, 我们就必须处理这个异常对象
1)  后边创建的是RuntimeException或RuntimeException子类对象, 可以不处理, 交给JVM处理
2)  编译异常(写代码时候报错),必须处理这个异常, 要么throws,要么try…catch
1.       说出异常的分类
2.       虚拟机处理异常的方式
3.       三个运行期异常
4.       trycatch
选中需要处理异常代码, Ctrl + Alt +T
5.       throws
6.       进程
一个正在运行的应用程序
7.       线程
进程的执行单元
8.       能够开启新线程
  Start   API

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马