Java进阶day26
【UML】【starUML】【rational rose】【Error】【Exception】
【所有的异常都是在运行时才会抛出,在编译阶段不会出现异常,因为抛出异常需要new对象,而编译阶段不会产生对象】


【编译时异常,运行时异常两者都发生在运行阶段,编译阶段不会发生异常】
【意思就是,编译时(编写过程中)不去修正编译时的异常,那么到了运行阶段就将该异常抛出,编译阶段仅仅会提示?】

【编译时异常和运行时异常的区别?】






【编译时异常:受检/受控异常】【运行时异常:未受检/未受控异常】

【java语言对异常处理的两种方式】【throws】【try...catch】


【异常上抛,若最终抛给了JVM 则程序终止】

【例子】


【例子】

【加了throws就会有异常?即便调用本身没有问题】

【异常的处理】【第一种处理方式 throws 上抛给调用者(推卸责任)】
【不建议main方法继续上抛,而应该try...catch】

【若JVM检测到异常真的发生,终止运行,若抛出的是假异常,则正常运行】
【第二种使用 try...catch 对异常进行捕捉(自己背锅)不再上抛】

【快捷生成 try...catch 】【快捷生成 throws 】

【异常抛出时,哪里程序执行,哪里不执行】
【上抛时,该方法的后续代码不会执行】
【try语句块中的代码出现异常后,try语句块中余下代码不会执行,而转去执行catch语句块中的程序】
【try...catch捕捉异常执行完后,在同一方法体中,余下的程序可以执行】

【catch() 括号中可以是具体的正确的异常类型,也可以是该异常的父类型异常】【不抓他儿子,抓他爹也管用】
【一个try可以有多个catch,不同的catch处理不同的异常,这有利于调试,而不要只catch一个Exception祖宗异常】
【多个catch时,要求从上到下,从小到大,不能把包含其他异常类的父类放到前面,即同一个类不能多次catch】

【jdk8的新特性】【catch的新写法】

【什么时候throws上报?什么时候catch捕捉?】
【如果希望调用者知道,并处理,采用throws上报,否则catch捕捉】
【如果既不上报也不捕捉,应该是运行时异常】

【什么是UML】【UML的作用】

-------整理自B站动力节点
浙公网安备 33010602011771号