1.异常是java运行中出现的问题的称呼。异常(Exception)的祖宗类是Throwable,与异常平级的Throwable的一个子类是Error,异常可以被处理,而错误(Error)无法被处理,只能重写源码。
2.Exception的一个子类RuntimeException是运行时出现异常使用的类。它不需要被抛出或处理,只能被重写,与Error类似。
3.异常处理的抛出是不断向调用者抛出,最终抛向JVM,而JVM只能用红字标出错误所在和终止程序。
4.在方法中判断异常的可能性,并用throw new Exception(String str)来向方法抛出问题,方法上会出现throws Exception来接收抛出的异常,此处的Exception是类名。然后在try catch的catch的()中用Exception e//可根据实际情况变化 接收异常,然后用Exception方法来打印到控制台上。
5.try catch finally格式
try{//被测试代码}catch(异常类名 变量名){//处理方式}finally{//一定被执行的代码}
6.如果没有一定被执行的代码,可以去掉finally。
7.可以使用一个try,多个catch的方法,但catch后面括号中的异常不能相同,并且若catch括号中的异常有子父类关系,子类要放在父类的前头,因为父类若放在前头,会发生多态,直接接收到子类的异常。
8.若父类没有声明异常,则子类也不能声明异常,只能重写或try catch处理。若父类声明了异常,则子类声明的异常不能超过父类声明异常的等级。
一个简单的抛出异常和处理异常的示例
public class Demo01 { public static void main(String[] args) { int[] arr={1,2,3}; try{ int x=count(arr); System.out.println(x); }catch(Exception e){ //三种处理异常的方法,都是打印到控制台上通知语句 e.printStackTrace(); System.out.println(e.getMessage()); System.out.println(e); } } //变量名后面的throws Exception是在声明异常 public static int count(int[] arr) throws Exception{ //判断条件,通过条件抛出异常 if(arr.length<4){ throw new Exception("数组长度不够");//抛出异常 } int x=arr[4]*2; return x; } }