异常: 一.概述 使用计算机语言进行项目开发的过程中,即使程序员把代码写的尽善尽美,在系统运行过程中仍然会遇到一些问题,因为 很多问题不是靠代码能够避免的,比如:客户输入的数据格式、读取的文件是否存在、网络是否始终保持通畅等等 二.异常 1. 定义: 在Java语言中,将程序执行中发生的不正常情况称为异常 2. 分类: Error:(B1:demo_01) Java虚拟机无法解决的严重问题。例如:JVM系统内部错误、资源耗尽等严重情况, StackOverflowError 和 OutOfMemoryError。一般不编写针对性的代码进行处理 Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理 分类:非受检异常 受检异常 三.Throwable (B1:demo_02) 1.java.lang.Throwable |-----java.lang.Error:一般不编写针对性的代码进行处理 |-----java.lang.Exception:可以进行异常处理 |-----编译时的异常(checked)受检异常 |-----IOException |-----FileNotFoundException |-----ClassNotFoundException |-----运行时的异常(unchecked)非受检异常 |-----NullPointerException |-----ArrayIndexOutOfBoundsException |-----ClassCastException |-----NumberFormatException |-----InputMismatchException |-----ArithmeticException 四.异常的处理 在编写程序的时候,经常要在可能出现错误的地方加上检测的代码 Java采用的异常处理机制,是将异常处理的程序代码集中在一起与正常的程序代码分开,使得程序简洁、优雅、有益于维护 1.try-catch-finally:解决异常(B1:demo_03) 可以catch多个异常,finally可以省略 1.1 try{ }catch(异常类型1 变量名1){处理异常的方式1}catch(异常类型2 变量名2){处理异常的方式2}finally{一定会执行的代码} 1.2 在没有写finally的时候一旦try中的异常匹配到来某个catch,就进入catch异常处理,一旦处理完成,就跳出当前的try-catch,继续执行后面的代码 1.3 catch中的异常类型,如果没有父子类关系,那么异常类型的排序没有影响,如果满足父子类关系,那么子类一定要排在父类的前面 1.4 catch里 变量名.getMessage() / 变量名.printStackTrace() 1.5 在try结构中声明的变量,在出了try以后就不能被调用了,如果需要用的话可以先定义到try结构外面 1.6 使用try-catch-finally处理编译时异常,使得程序在编译时不再报错,但是运行时仍可能报错 1.7 finally中声明的是一定会被执行的代码,例如try中有return、catch中也有异常也不影响finally里代码的执行 1.8 什么时候才会写代码到finally里:需要自己关闭的物理连接(数据库连接、输入输出流、网络编程Socket)需要声明在finall 2.throws+异常类型:上报异常(B1:demo_04) 2.1 throws + 异常类型 2.2 一旦方法体执行,遇到异常后就会在代码处生成对应异常类对象,此对象匹配到throws的异常类型后就会抛出异常对象。异常代码后面的代码就不再执行 2.3 throws只是将异常抛给方法的调用者,并没有真正的将异常处理 抓抛模型: 1.抛:程序在执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象,并将此对象抛出,一旦抛出对象后,其后的代码就不再运行 关于异常对象的产生: ① 系统自动生成的异常对象 ② 手动的生成一个异常对象,并抛出(throw) 2.抓:可以理解为异常的处理方式:① try-catch-finally ② throws 自定义异常; 1.继承于现有的异常结构:RuntimeException、Exception 2.提供全局变量:serialVersionUID
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)