多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 大数据学习笔记第9天 - 异常、IDE # ## 01 回顾 作业 ... ## 02 异常分类 异常捕获 异常体系 常见异常 异常的处理 自定义异常类及使用 常见的异常:被0除,空指针,索引越界等; 异常的体系: Throwable Error 通常出现重大问题,如虚拟机崩溃或者内存溢出等; 这些异常不用处理,也处理不了 Exception 在运行时出现的异常情况,可以通过try catch finally处理 Exception和Error的子类名都是以父类名作为后缀 图exception01.jpg 图exception02.jpg 图exception03.jpg 图exception04.jpg 图exception05.jpg 图exception06.jpg 图exception07.jpg 图exception08.jpg 演示实例:当除数为0时,java.lang.ArithmeticException: / by zero *E:\01\01 Java\day09\code\ExceptionDemo01.java* [code] public class ExceptionDemo01{ public static void main(String[] args){ int i = 2 / 0; //编译时不报错,运行时异常 } } [/code] 图2018-08-28_224801.png 演示实例:捕获异常 图2018-08-28_230630.png *E:\01\01 Java\day09\code\TryDemo.java* [code] /* try...catch捕获异常 */ public class TryDemo{ public static void main(String[] args){ try{ int num = 1/0; }catch(ArithmeticException e){ System.out.println("发生了算术异常"); }catch(NullPointerException e){ System.out.println("发生了空指针异常"); }finally{ System.out.println("一定会被执行后的代码"); } System.out.println("异常处理之后的代码"); } } [/code] 如果程序没有捕获到异常,将不会往下执行,如下所示: [code] /* try...catch捕获异常 */ public class TryDemo{ public static void main(String[] args){ try{ //超出索引范围的异常 int[] arr={1,2,3}; int i=arr[3]; }catch(ArithmeticException e){ System.out.println("发生了算术异常"); }catch(NullPointerException e){ System.out.println("发生了空指针异常"); } //java.lang.ArrayIndexOutOfBoundsException /* catch(Exception e){ System.out.println("发生了未知异常"); } */ finally{ System.out.println("一定会被执行后的代码"); } System.out.println("异常处理之后的代码"); } } [/code] 图2018-08-28_231342.png ## 03 finally执行流程面试题 catch块中常见的处理方法: - 由于捕获的异常都是Throwable类的子类对象,所以完全可以调用Throwable中定义的方法。 - getMessage() 获取异常信息,返回字符串。 - toString() 获取异常类名和异常信息,返回字符串。 - printStackTrace() 获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void。 - printStackTrace(PrintStream s) 通常用该方法将异常内容保存在日志文件中。 图2018-08-28_235800.png 实例: *E:\01\01 Java\day09\code\TryDemo2.java* [code] public class TryDemo2{ public static void main(String[] args){ try{ int[] arr={1,2,3}; int i=arr[3]; }catch(Exception e){ String message = e.getMessage(); System.out.println(message); System.out.println(); e.printStackTrace(); System.out.println(); String message2 = e.toString(); //java.lang.ArrayIndexOutOfBoundsException: 3 System.out.println(message2); }finally{ System.out.println("一定会被执行后的代码"); } System.out.println("异常处理之后的代码"); } } [/code] 图2018-08-29_002005.png 面试题:finally的执行流程 *E:\01\01 Java\day09\code\FinallyTest.java* [code] public class FinallyTest{ public static void main(String[] args){ int num = test(); System.out.println("test()方法的返回值是:" + num); } public static int test(){ try{ System.out.println("进入了test()方法"); int i=1/0; return 1; }catch(Exception e){ System.out.println("该程序发生了异常"); return 2; //暂时挂起,等执行完finally再执行 }finally{ System.out.println("finally里的语句"); return 3; //一般不会再finally中定义return,提前终止程序 } } } [/code] 图2018-08-29_001407.png ## 04 throws throw关键字区别 ## 05 自定义异常类及使用 ## 06 自定义异常类练习 ## 07 方法重写时异常处理的细节 ## 08 包简介 定义格式 ## 09 访问权限演示 ## 10 修饰符总结 ## 11 jar包的制作和使用 ## 12 eclipse基本操作 ## 13 子类实现抽象类 接口的快速方法 ## 14 使用第三方jar包 ## 15 项目的导入