异常总结
异常:自定义异常:在java对一些常见的情况进行描述。形成了异常体系,但是在自定义的项目发生的特定问题,java并没有针对的描述所以按照java的面向对象思想,也可以对问题进行描述。1,定义一个类继承Exception。1.1为了让自定义的类具备可抛性。1.2为了让自定义的类可以获取Throwable中的方法。2,如果要给自定义异常定义信息描述。可以通过构造函数将信息通过super语句向上传递。class NoException extends Exception {NoException(){super();}NoException(String message){super(message);}}class Demo{void show(int x)throws NoException{if(x<0)throw new NoException("错错");//throw new RuntimeException("异常信息");}}如果函数内有throw进行异常抛出。那么函数上一定义要有对应的throws标识。特例情况:如果函数内容throw抛出的是RuntimeException或其子类。那么函数上可以不用throws标识。因为RuntimeException是运行时才会检查的异常。编译时期不会被检查。而其他的异常,都是编译时期的被检查的异常。所以必须要标识,否则编译失败。在自定义异常时,同样也可以继承RuntimeException。异常处理的规则:1,调用被throws标识的函数时,需要对该函数进行处理.a,继续抛出。b,通过try catch finally处理。2,当调用的功能抛出多个异常时,处理中的如果通过try catch,需要定义多个与之对应的catch进行处理。多catch出现时,一定要注意,父类的catch向下放。3,当子类覆盖父类时,只能抛出父类异常的子类,或者异常的子集。class Fu{void show()throws A,B,C{}}class Zi extends Fu{void show(){}}特殊:如果被覆盖的方法没有抛出异常。那么子类覆盖时,也不可以抛,但子类中还出现了异常。那么只能trycatch。4,函数内只要发生了异常,没有被catch,就必须要标识。当然,运行时异常除外。格式特点:try+catch(多个). try+finally{}try+catch+finally{}只有catch是对异常的处理。没有catch就是没有处理异常。finally:该代码块中定义的语句一定会被执行。什么时候用呢?当关闭资源时,需要将关闭动作定义在finally当中。关闭数据库资源,关闭系统资源。只有一种情况读不到,System.exit(0);void checkUser(String name){if(name.equals("abc"))//if("abc".equals(name))//if(name!=null && name.equals("abc"))System.out.println("ok");elseSystem.out.pirntln("no");}异常的分层封装:show()throws NoException{try {throw new SQLException();}catch(Exception e){throw new NoException("数据操作未成功");}}