对异常来讲,最重要的部分就是类名了,因此有默认的构造器就好了。程序员
要自定义异常类,必须从已有的异常类继承,最好是选择意思相近的异常类继承(不过这样的异常并不容易找)。通常来讲继承Exception 或者 RuntimeException编程
异常处理程序spa
只有匹配的catch子句才能获得执行;这与switch语句不一样,switch语句须要在每个case后面跟一个break,以免执行后续的case子句。继承
方法上的throws 是为了申明该方法将会抛出异常,打个比方:接口
若是你有源代码那么你能够在源码中查找throw语句来获知相关信息,而后程序库一般并不与源码一块儿发布,为了预防这样的问题,JAVA强制你使用throws语法,使你能以礼貌的方式告知方法调用者,这个方法调用者这个方法可能会抛出异常。这就是异常说明。开发
能够申明抛出异常,但实际程序里并不抛出异常,这样的好处是,为了从此的异常占个位子,在定义抽象类和接口是这种能力很重要。源码
非检查异常(不受检查的异常)RuntimeExceptionit
这种异常属于错误,将被自动捕获,就不用你亲自动手了,要是去检查RuntimeException的话,代码就显得太混乱了。虽然能够不用捕获,可是仍是能够在代码中抛出RuntimeException类型的异常。io
究其缘由RuntimeException表明的是编程错误语法
Finally总能被执行
开发异常处理系统的缘由是,若是为每一个方法的全部可能发生的错误都进行处理的话,任务就显得过于繁重了,程序员也不肯意。结果经常是将错误忽略,应该注意到,开发异常异常处理的初衷是为了方便程序员处理错误。
异常处理的重要原则是“只有你知道如何处理的状况下才捕获异常”。实际上,异常处理的另外一个重要目标是把错误处理的代码同错误发生的地点相分离,这使你能在一段代码中专一要完成的事情。至于如何处理则放到另外一端代码中。易于理解和维护。
就能够将本身的检查异常 转为非检查异常(RuntimeException)