day05--Java基础知识--Exception异常
2015-07-20 12:07
555 查看
package day05; /* * 异常:在程序运行时发生了不正常的情况,此时由系统中断程序的运行 * * 异常类的由来:当程序发生不正常情况时,Java中提供一个类描述这个不正常情况的信息, * 包含异常信息、异常类名、异常的位置 * *异常分类: * Error 错误: 由系统原因造成,一般是系统资源分配冲突时或系统崩溃等原因 * 这一类Error错误,对于程序员来说是无法处理的 * * Exception: 由于程序原因造成的,一般是运算、I/O读取等原因 * 这一类Exception异常,可以进行处理 * * Java中异常类的体系: * * Throwable * Error: * Exception: * RuntimeException:非受控异常(运行时异常) * * 在Java中如何处理异常 * * 1.捕获异常处理 * 格式1: * try{ * 可能出现异常的语句; * }catch(异常类型 对象名){ * 处理异常语句; * } */ public class Demo3 { static int divide(int a, int b) { int result = 0; try { result = a / b; } catch (ArithmeticException e) { e.printStackTrace(); System.out.println("除数为0了!"); } System.out.println("计算结果完成..."); return result;// 当此处出现异常时,会抛给调用者(main方法) } public static void main(String[] args) { // 从命令行中读取运行此程序的两个参数 String aStr = args[0]; String bStr = args[1]; // 将数字字符串转成数值类型 int a = Integer.parseInt(aStr); int b = Integer.parseInt(bStr); int r = divide(a, b);// 在运行时会发生ArithmeticException,则main抛给JVM System.out.println(r); } }
package day05; /* * 异常:在程序运行时发生了不正常的情况,此时由系统中断程序的运行 * * 异常类的由来:当程序发生不正常情况时,Java中提供一个类描述这个不正常情况的信息, * 包含异常信息、异常类名、异常的位置 * *异常分类: * Error 错误: 由系统原因造成,一般是系统资源分配冲突时或系统崩溃等原因 * 这一类Error错误,对于程序员来说是无法处理的 * * Exception: 由于程序原因造成的,一般是运算、I/O读取等原因 * 这一类Exception异常,可以进行处理 * * Java中异常类的体系: * * Throwable * Error: * Exception: * RuntimeException:非受控异常(运行时异常) * * 在Java中如何处理异常 * * 1.捕获异常处理 * 格式1: * try{ * 可能出现异常的语句; * }catch(异常类型 对象名){ * 处理异常语句; * } * 2.抛出异常 * 1)声明方法时抛出异常 * 方法名() throws 异常类名[,异常名,异常类名]{} * 2)在方法中抛出异常 */ public class Demo3 { static int divide(int a, int b) throws ArithmeticException { int result = 0; result = a / b;// 当发生异常时,向调用者抛出异常 // 当异常抛出时,其下的语句不会被执行 System.out.println("计算结果完成..."); return result;// 当此处出现异常时,会抛给调用者(main方法) } public static void main(String[] args) { // 从命令行中读取运行此程序的两个参数 String aStr = args[0]; String bStr = args[1]; // 将数字字符串转成数值类型 int a = Integer.parseInt(aStr); int b = Integer.parseInt(bStr); try { int r = divide(a, b);// 在运行时会发生ArithmeticException,则main抛给JVM System.out.println(r); } catch (Exception e) {//可以处理所有异常,即Exception类是所有异常的父类 e.printStackTrace(); } } }
package day05; /* * 处理多个异常的格式: * try{ * }catch(异常类名 对象名){ * }catch(...){ * }catch(...){ * } * * 注意:处理多个异常类时,异常的子类所在的catch语句要放在最上面 */ public class Demo5 { static class Person { String name; public Person(String name) { this.name = name; } public String toString() { return "[name=" + name + "]"; } } static void sub(int a, int b, int[] nums, Person p) { try { int r = a / b;//此行如果出现了异常,则下行代码不会执行 r = nums[5] / 9; System.out.println(p); } catch (ArithmeticException e) { System.out.println("除数为0了..."); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组的索引值越界了..."); } catch (NullPointerException e) { System.out.println("访问的对象是null"); } } public static void main(String[] args) { int[] nums = { 9, 10, 8, 66, 22, 109 }; sub(10, 2, nums, new Person("张三")); sub(10, 0, new int[3], null); } }
package day05; import javax.management.RuntimeErrorException; /* * 抛出多个异常的格式: * * 在方法声明的后边,使用 throws异常类型列表 语句 */ public class Demo6 { static class Person { String name; public Person(String name) { this.name = name; } public String toString() { return "[name=" + name + "]"; } } // 抛出多个异常,抛给调用者处理 static void sub(int a, int b, int[] nums, Person p) throws Ar a6b8 ithmeticException, IndexOutOfBoundsException, NullPointerException { int r = a / b;// 此行如果出现了异常,则下行代码不会执行 r = nums[5] / 9; System.out.println(p); } static void div(int a, int b) { if (b == 0) { // 抛出异常 throw new RuntimeException("除数为0"); } } public static void main(String[] args) { int[] nums = { 9, 10, 8, 66, 22, 109 }; // sub(10, 2, nums, new Person("张三")); try { //sub(10, 4, new int[3], null); div(9, 0); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组长度小于6"); } catch (IndexOutOfBoundsException e) {// 父类异常的处理放在子类异常处理的下面 System.out.println("索引值越界异常..."); } catch (Exception e) {// 异常类的父类所处的catch要放在最后 e.printStackTrace(); } } }
相关文章推荐
- Java线程之守护线程(Daemon)用法实例
- Java数组的扩容
- JAVA的包
- Java的日期格式化常用方法
- java日期格式化
- 使用Java中的for循环来实现九九乘法表
- Java中printStackTrace()、toString()、getMessage()的区别
- Solaris 安装JDK
- Java框架1
- spring注释大全
- Java的注释说明
- Java 中Thread用法
- 统计java方法(函数)的代码行数
- java 反射 reflect
- 为eclipse离线安装hibernate tools插件
- 学习笔记——Java数组
- eclipse修改web项目部署路径
- SpringMVC 源代码深度解析(context:component-scan)(扫描和注册的注解Bean)
- 在eclipse里如何快速定位到某一行?
- JAVA生成XML文件