2.Java异常学习

1.Java异常的概念

  • 异常的例子
  • 1.除法就是一个需要捕获异常的例子,除数又可能是0
  • 异常处理的基本流程如下
  • 一旦发生异常,就使得程序不按照原来的流程继续的运行下去
  • a.程序抛出异常
      • try{
      •     throw new Exception();
      • }
  • b.捕获异常
      • catch(Exception e){

        • //异常处理程序  
      • }
  • c.finally代码块
  • 必须注意的是:在finally块中不能抛出异常。
      • finally{

        • //一定会被执行
        • //除非catch中有System.exit(0);会推出Java虚拟机      
      • }
  • 总结:
  • 1.当程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,java虚拟机检测寻找和try关键字匹配的处理该异常的catch块,如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。如果没有找到处理该异常的catch块,则执行finally块代码。
  • 2.线程的run函数是不能抛出异常的(可以在函数内部捕获并处理,但是不能向上提交),run函数的异常被提交给uncaughtExceptionHandler处理,后变会详细介绍
  • 3.出了run函数其他的函数都可以把函数中抛出的异常向上级提交。
  • 异常的结构
  • 图1.异常结构(来自参考文献一)
  • 异常分类
  • 1.UnckeckedException--Error(不准确,但是Error确实是在运行时检查并抛出的)和RunTimeException-------程序中不需要进行补货
  • 2.checkedException-----IOException、ClassNotFoundException、CloneNotSupportedException
  • 这里的检查不检查针对的是编译器
  • 常见的RunTimeException-NullPointerException、数组越界、字符串越界、算数错误(a/b)、参数类型错误(Integer.parseInt(“abc"))
  • 在声明方法时候抛出异常
  • public void openFile() throws IOException{//code}
  • 一般函数申明的时候抛出的异常是chenckedException
  • 覆盖父类某方法的子类方法不能抛出比父类方法更多的异常,所以,有时设计父类的方法时会声明抛出异常,但实际的实现方法的代码却并不抛出异常,这样做的目的就是为了方便子类方法覆盖父类方法时可以抛出异常。
  • Cathch异常
  • 注意:一个try块可以处理多种类型的异常(最多只有一个catch模块会被执行,与switch不相同)
  • 逻辑上一个try后处理多个异常会报错—下面的代码会报错[先catch子类异常,之后再catch父类异常]
  • 因为后一个catch不可能被执行到
      • try{
      •  //code
      • }catch(Exception e){
      • }catch(RuntimeException e){//报错一定不会被执行到    
      • }
  • 自定义异常---就是继承自已有的异常
  • 最重要的其实是异常的名字
  • class MyException extends Exception{}
  • 默认的构造函数
  • 1.super() 调用基类的构造函数进行初始化
  • 2.super(message)

参考文献:http://www.codeceo.com/article/java-exception-learn.html#0-tsina-1-56987-397232819ff9a47a7b7e80a40613cfe1

时间: 2024-08-05 07:07:16

2.Java异常学习的相关文章

“全栈2019”22篇Java异常学习资料及总结

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"22篇Java异常学习资料及总结 下一章 "全栈2019"Java多线程第一章:认识多线程 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组". 全

java 异常学习

原文出处 :http://www.cnblogs.com/lulipro/p/7504267.html 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?. Java提供了更加优秀的解决办法:异常处理机制. 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰.Java中

java异常学习

一.从根部异常可以分为Erro和Exception两大类他们都继承自Thorwable: Error一般指的是一些无法挽回的错误,当这些错误发生后,程序就会直接死掉,无法继续运行. Exception : 一般分为:运行时异常和非运行时异常, 运行时异常:指的是程序已经通过编译,在程序运行时产生了异常,这个是由于程序自己编写的代码不够健壮,考虑不够完善导致的.如果程序员足够认真这些是完全可以避免的. 非运行时异常:是程序代码语法错误 ,在程序编译时就不能通过而抛出的异常. public clas

Java异常学习总结

Java中的异常 定义 异常(Exception)就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序. 常见类型举例 所需文件找不到(ClassNotFoundException) 网络连接不通或中断 Sql语句执行异常(SQLException) 输入输出异常(IOException) 算术运算异常(被0除)ArithmeticException 数组下标越界(ArrayIndexOutOfBoundsException) 装载一个不存在的类或者null对象操作(NullPoi

java基础 异常学习笔记

1.异常是导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序中断执行,造成不必要的损失,所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正确的执行. 2.一旦产生异常之后,异常之后的语句并不会执行,而是直接结束程序,并将错误报告给用户. 3.在计算机发展史有两大杀手:断电,被除数为0(结果为无穷大,则程序内容会被全部占满). 处理异常的格式: try{// 可能出现异常的语句} catch(异常类异常对象){//编写异常的处理语句} ca

Java线程学习笔记(二) 线程的异常捕捉

线程异常的捕捉: 正常的情况下,我们在main()方法里是捕捉不到线程的异常的,例如以下代码: public class ExceptionThread implements Runnable{ @Override public void run() { throw new NullPointerException(); } public static void main(String[] args) { ExecutorService executorService = Executors.n

《深入Java虚拟机学习笔记》- 第17章 异常

<深入Java虚拟机学习笔记>- 第17章 异常

Java并发学习之八——在线程中处理不受控制的异常

本文是学习网络上的文章时的总结,感谢大家无私的分享. 1.Java里有2种异常: 检查异常:这些异常必须强制捕获她们或在一个方法里的throws子句中. 未检查异常:这些异常不用强制捕获它们. 2.在一个线程对象的run()方法里抛出一个检查异常,我们必须捕获并处理她们.因为run()方法不接受throws子句.当一个非检查异常抛出,默认的的行为是在控制台写下stack trace并退出程序. package chapter; public class Main8 { /** * <p> *

【学习笔记】java异常

异常是程序在执行时发生的事件,它会打断指令的正常流程. Java中提供了一种独特的处理异常的机制,通过异常来处理程序设计中出现的错误. Java异常是一个描述在代码段中发生的异常情况(出错)的对象. 引发异常: 在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象.生成的异常对象将传递给Java运行时系统,这一异常的产生和提交过程称为引发异常. 分类: JRE(系统)产生异常对象 人为产生异常对象(明确用throw关键字) 异常处理机制: 两种处理例外的机制: 捕获异常(try