前言:相对于之前的JAVA基础、面向对象而言,异常较为简单,无非就是怎么去抓取异常,怎么去抛出异常之类的,IO这块我是自己做了个基础模板帮助类,在平常工作中如果涉及到IO这块,我一般都是直接拿我这个模板改,多线程也是弄了个模板,在后面我会附件上传的

异常

  • 1.异常的概念:程序中出现的错误
    Error:重大的错误,比如内存溢出,磁盘空间不够了…,这种错误一般程序无法处理。
    运行时异常:语法没有错误,而运行时违反了java程序的规范而导致程序终止,这种异常往往是由于程序的逻辑不严谨而引起。
    非运行时异常:语法错误,不能通过编译,是由程序的设计人员定义的,必须要处理。
    如果方法重写中,子类抛出的异常必须是父类抛出的异常或者父类抛出异常的子类
  • 2.异常的分类:
    编译时异常(非运行时异常):语法错误,不能通过编译(eclipse直接以红线的形式提示)
    程序运行异常(运行时异常):语法没有错误,而运行时违反了java程序的规范而导致程序终止

程序运行异常又可分为:
*系统异常:违反了Java已经定义好的一些规范,如数组下标越界,除数为0等
*自定义异常:违反了程序员自己定义的一些规范,如年龄只能在0-100,性别只能为男或女等。

  • 3.异常出现的状态(程序运行异常):程序终止,并在控制台显示错误的详细描述信息

  • 4.处理异常的目的:当出现异常时 能继续运行程序而不终止,并且用控制台显示的方式换成自定义的形式(一般在做项目四,异常信息会记录在日志里面,方便定位错误,在后面进行系统维护)

  • 5.异常处理的一般模式:try catch Exception finally
    a.try :用来监视有可能出现异常的代码块。当出现异常时将异常抛出到catch
    b.catch:当出现异常时,负责处理异常的代码块,try中一旦有异常会自动跳转到这里
    d.Exception类:异常也是对象,都属于Exception类,抛出到catch块中的就是个异常对象。使用异常对象来获得异常信息。
    c.finally:无论是否有异常,都会执行的代码
    PS:final,finally,finalize三个单词相似但是意思全完全不相同,这点需要注意。
    final:最终的,不可改变的,用它来修改变量,这个变量就是常量;用它来修改类,这个类就不能被继承;用它来修饰方法,这个方法就不能被重写。
    finalize:是Object的一个方法,任何类都可以对其进行重写,在GC开始工作前,会调用此方法,我们可以进行一些前期的清理工作。
    finally:与try…catch…一起使用,表示一定会执行的代码(特殊情况:在执行finally前,存在被执行的System.exit(int i),此时finally不会再执行)

  • 6.多重catch语句
    当一段代码中可能出现多种类型异常时,可以接上多个catch块分别处理不同类型的异常。系统会自动选择最适合的catch块来处理异常。可以处理多种异常,但每次只会处理一个。一般在最后加上处理Exception类型的异常表示其他未知错误。
    异常要越具体越好,以便一对异常有针对性的处理。
    catch模块可以多,如果catch后面的异常有继承关系,子类异常要写到父类异常的前面

  • 7.自定义异常的处理

    a.自定义异常类,继承与Exception,在构造函数中使用super(String)向父类传递一个表示异常信息的字符串。
    b.抛出自定义异常对象的方式:throw new XXXException().
    c.处理自定义异常的方式:catch 等同与处理系统异常。

a.自定义运行时异常public class AException extends RuntimeException{public AException(String msg){super(msg);}}b.自定义非运行时异常public class BException extends Exception{public BException(String msg){super(msg);}}
  • 8.throws关键字
    a.作用:在Java中允许在一个函数内,如果有异常函数内部不处理而使用throws关键字表示该函数会抛出的异常类型。这些异常将交给调用该函数的其他函数负责处理。
    b.其他函数调用时则必须处理 或者可以使用throws继续向上层调用者抛出。
    throw:抛出一个异常对象,用在方法里面,后面跟异常对象
    throws:声明方法有可能会抛出某种异常 用在方法的声明上面,后面跟异常的类名
    PS:使用throws向外抛出异常可让代码模块变得简洁明了,但缺点也是明显的,在一个项目中如果都向外抛出异常,最后维护时会很难找到出问题的模块,需要一级一级的去排查

吐槽:第一次用这个资源功能,还不如大学毕业时要上传论文的空间,空间样式什么的都可以自己编辑,可以上传附件,附件免费下载,我的东西给别人下载,还要收钱,这就是中间商赚差价吗?秀啊
附件地址:
https://download.csdn.net/download/kk907528318/10850899

1.异常、IO、多线程相关推荐

  1. Java学习笔记(7)——Java基础之IO多线程网络思维导图

    Java面向对象学习笔记之:包括IO(字节流,字符流,节点流,处理流).线程(线程创建,线程控制,线程同步).网络(TCP Scoket,  UDP Scoket)(全屏观看Java学习笔记(7)-- ...

  2. io多线程 性能 扯犊子

    2019独角兽企业重金招聘Python工程师标准>>> io多线程 性能 扯犊子 博客分类: 操作系统 搜素到的各种扯犊子....... io多线程,会降低磁盘的读写?这里的磁盘,只 ...

  3. 后端开发【一大波有用知识】Redis中的IO多线程(线程池)

    一.Redis中的IO多线程原理 ​服务端收到一条信息,给它deconde成一条命令 然后根据命令获得一个结果(reply) 然后将结果encode后,发送回去 redis的单线程是指,命令执行(lo ...

  4. Redis io多线程

    redis io多线程 redis单线程是指logic在单线程中执行. redis io多线程指read.decode.encode.write在io线程池中处理. 开启多线程的时候,同一个连接的命令 ...

  5. 5_异常_多线程_设计模式_IO流_网络编程_反射

    JavaSE_第五周 异常 异常的概念 什么是异常 概念 概念:程序在运行过程中出现的特殊情况异常-----通过Jvm将异常的信息打印在控制台---告诉开发者(当前程序在某个环节出现了哪些问题!) 异 ...

  6. Java笔记整理五(Iterator接口,泛型,常见数据结构(栈,队列,数组,链表,红黑树,集合),jdk新特性,异常,多线程,Lambda表达式)

    Java笔记整理五 1.1Iterator接口 Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象 ...

  7. Java 学习(20)--异常 /  IO 流

    异常(Exception) (1)程序出现的不正常的情况. (2)异常的体系 Throwable(接口,将异常类对象交给 JVM  来处理) |--Error 严重问题,我们不处理.(jvm 错误,程 ...

  8. java线程带来的异常,java多线程练习之捕获子线程异常例子

    本文章给大家介绍java多线程练习之捕获子线程异常一个实例,希望对大家会有所帮助. java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己 ...

  9. 五、Java中常用的API(通过包进行分类)————异常、多线程和Lambda表达式

    之前已经介绍了java.lang包下的相关类,今天将要补充两个常用的API:java.lang.Throwable和java.lang.Thread 一.异常(java.lang.Throwable) ...

  10. Java MinIO上传文件报异常io.minio.errors.XmlParserException: null等

    minioClient.putObject("10-26", "/中午14/ces.docx", "C:\\Users\\T480S\\Desktop ...

最新文章

  1. [深度学习] keras的EarlyStopping使用与技巧
  2. 传染病控制(洛谷 1041 WA 90)
  3. 超过1.2W星的「机器学习路线图」,你的收藏夹可以更新了!
  4. Python 打开目录与指定文件
  5. 基于深度学习(端到端)的OCR文字识别
  6. JSON数据实际应用
  7. python学习手册四版中文_Python学习手册(第4版) 中文版.pdf 全文免费
  8. 老码识途——1.1反汇编机器码入门
  9. 用C 程序理解汉字的机内码表示
  10. 指纹识别 python实现_Python实现指纹识别你见过没?
  11. 液晶屏接口定义_简介TFT-LCD液晶屏接口类型之LVDS接口
  12. python利用danmu实时获取斗鱼等直播网站字幕
  13. 网络学习 IP路由器寻址过程
  14. Eigenvalue of random matrix
  15. 华为笔试题 linux c,华为C/C++笔试题 2
  16. css3贝塞尔曲线_CSS3动画–使用贝塞尔曲线创建具有弹跳效果的扇出
  17. java hashmap 去重_HashMap去重 - osc_sj1kgo4z的个人空间 - OSCHINA - 中文开源技术交流社区...
  18. 谁的数据在说谎:天翼云71亿、浪潮云估值100亿、金山云亏了27亿?
  19. html磨砂效果,使用css制作磨砂效果
  20. 浙江工商大学计算机专业考研分数,浙江工商大学2021考研分数线已公布

热门文章

  1. 网易云音乐API调用(持续跟新中)
  2. 微信公众平台java开发之接口url与token填写
  3. [UE4][BluePrint] 钳制 PawnController 的 Rotation Yaw 和 Pitch
  4. 第一瓢水:讲述学习的故事,分享学习的快乐---大家一起来
  5. java工作流引擎系统授权代办操作
  6. sqlserver查询所有作业情况
  7. 《百面机器学习——学习笔记》个性化推荐系统
  8. java中的导入gnu,【JAVA学习笔记】静态导入
  9. BJT管及其放大电路
  10. Git – Fast Forward 和 no fast foward