目录
Java 异常概述
java异常体系结构
常见的异常
异常处理
运行期异常和编译期异常
自定义异常
1.Java 异常概述
异常:程序在执行过程中,出现的不正常情况,如果不处理最终会导致JVM的非正常停止。程序运行中,用户输入输入数据格式有误,读取文件被强制删除,文件传送时断网,就会出现异常 要注意异常和语法错误的区别,语法错误,编译会通不过,不会产生字节码文件,根本不能运行
异常的抛出机制
Java中把不同的异常用不同的类表示,一旦发生某种异常,就创建该异常类型的对象,并且抛出。
然后程序员可以捕获到这个异常对象,并处理;如果没有捕获这个异常对象,那么这个异常将会导致程序终止。
2.异常体系结构:
java.lang.Throwable 是java异常体系中的根父类
两个常用方法:public void printStacTrace():打印异常详细信息
public String getMessage ():获取发生异常S的原因
两个子类:
java.lang.Error :错误 是java程序无处理,比如内存不够
java.lang.Exception :异常,出现的一般性问题,可以使用Java异常处理机制处理
3.常见异常
运行时异常--Exception
Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,需要使用针对性的代码进行处理,使程序继续运行。否则一旦发生异常,程序也会挂掉
Error
java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。一般不编写针对性的代码进行处理。
4.异常处理
java中提供一套一场处理机制,在程序发生异常,可以执行预先设定好的处理程序,执行完成后程序停止,可以继续向后执行。
在写代码的时候,就要根据不同的情况设定好处理程序,运行程序 如果程序执行时,出现问题,执行异常处理程序, 如果程序执行时,没有出现问题, 不需要执行异常处理程序
关键字处理
try{
写代码,可能会出现异常
}catch(异常类型 a){
捕获指定类型的异常
}finally{
最终必须要执行的代码
}
catch中的小方法
throws throw处理
5.运行期异常和编译期异常
运行期异常:是RuntimeException类及其子类异常,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序员写程序要注意,程序应该从逻辑角度尽可能避免这类异常的发生。运行时异常的特点在编译期间不会要求强制处理,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出,也会编译通过。
编译期异常:是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。
6.自定义异常
java API 中定义的标准异常类,都是与语法有关的(空指针,索引越界),但是程序可能不满足某种业务条件,想以抛出异常的形式处理,就需自定义一个业务相关的异常类来表示(比如分数不合法,scoreException)