Java基本功练习十八(异常处理【获取异常信息、链式异常和finally语句、自定制异常】)
来源:互联网 发布:ubuntu添加vga 788 编辑:程序博客网 时间:2024/05/21 10:46
在程序运行中,如果环境检测出一个不可能执行的操作,就会出现运行时错误(runtime error)。例如:
越界错误ArrayIndexOutOfBoundsException。
文件不存在错误FileNotFoundException等等。
Java中,异常会导致运行时错误。异常就是一个表示阻止执行正常进行的错误或情况。如果异常没有被处理,那么程序将会非正常终止。
应该处理这个异常,以便使得程序可以继续运行或平稳终止。
范例一:异常处理的创建、抛出、捕获以及处理异常。
运行效果如图所示:
实现的源代码如下:
package Blog;public class blogTryProject{//获取异常的信息public static void main(String[]args){try{System.out.println(sum(new int[]{1,2,3,4,5}));}catch(Exception ex){ex.printStackTrace();System.out.println("\n"+ex.getMessage());System.out.println("\n"+ex.toString());System.out.println("\nTrace Info Obtained form getStackTrace");StackTraceElement[] traceElements = ex.getStackTrace();for(int i = 0;i < traceElements.length;i++){System.out.print("method "+traceElements[i].getMethodName());System.out.print("("+traceElements[i].getClassName()+":");System.out.println(traceElements[i].getLineNumber()+")");}}}private static int sum(int[] list){int result = 0;for(int i = 0;i <= list.length;i++)result += list[i];return result;}}
主要有三个异常,ArithmeticException、FileNotFoundException和InputMismatchException在Java API中有很多预定义的异常类,如下图所示:
范例二:链式异常和finally语句。
运行效果如图所示:
实现的源代码如下所示:
package Blog;public class blogTryProject{public static void main(String[]args){//链式异常ChainedExceptionDemo ced = new ChainedExceptionDemo();ced.main(args);//finally语句演示FinallyDemo fd = new FinallyDemo();fd.main(args);}}//链式异常class ChainedExceptionDemo{public static void main(String[]args){try{method1();}catch(Exception ex){ex.printStackTrace();}}public static void method1()throws Exception{try{method2();}catch(Exception ex){throw new Exception("New info from method1,",ex);}}public static void method2()throws Exception{throw new Exception("New info from method2");}}//finally语句演示class FinallyDemo{public static void main(String[]args){java.io.PrintWriter output = null;try{output = new java.io.PrintWriter("text.txt");output.println("Welcome to Java");}catch(java.io.IOException ex){ex.printStackTrace();}finally{if(output != null) output.close();}System.out.println("End of program");}}范例三:自定制异常。
运行效果如图所示:
实现的源代码如下所示:
package Blog;public class blogTryProject{public static void main(String[]args){System.out.println("\n自定制异常");try{Circle c = new Circle();c.setRadius(-5);}catch(InvalidRadiusException ex){System.out.println("The invalid radius is "+ex.getRadius());}}}//自定制异常class InvalidRadiusException extends Exception{private double radius;public InvalidRadiusException(double radius) {super("Invalid radius "+radius);this.radius = radius;}public double getRadius(){return radius;}}//带半径异常的圆类自定义异常class Circle{private double radius;private static int numberOfObjects = 0;public Circle(){this(1.0);}public Circle(double newRadius){this.radius = newRadius;//setRadius(newRadius);numberOfObjects++;} public double getRadius(){return radius;}public void setRadius(double newRadius)throws InvalidRadiusException{if(newRadius >= 0)radius = newRadius;elsethrow new InvalidRadiusException(newRadius);}public static int getNumberOfObjects(){return numberOfObjects;}public double findArea(){return radius * radius * Math.PI;}}
0 0
- Java基本功练习十八(异常处理【获取异常信息、链式异常和finally语句、自定制异常】)
- Java异常 finally语句
- Java异常finally语句
- Java异常处理-----finally
- java异常处理finally机制
- Java 异常处理:finally,return
- JAVA异常处理二--finally
- JAVA 异常处理练习
- java异常和异常处理
- java 获取异常信息
- 异常处理的try-catch-finally语句
- 异常处理相关 try/finally语句
- C#中异常处理语句Finally
- Java study 10day--finally与异常处理语句格式
- java在处理异常时finally语句的作用
- 异常和异常处理
- 异常和异常处理
- 第04章 异常处理 05 异常的捕获和处理 finally语句
- [水题][第一阶段-回归水题][HDOJ-2022]海选女主角
- xml 节点与元素问题
- 理解Android系统(一)
- mysql 性能优化点记录
- 林奇与“三体世界”:打造一段大IP下的传
- Java基本功练习十八(异常处理【获取异常信息、链式异常和finally语句、自定制异常】)
- [wordpress搬家]Android 基础 — 版本对照表
- -[UITableView _dequeueReusableViewOfType:withIdentifier:], /SourceCache/UIKit/UIKit-2935.137/UITab
- Jenkins和gerrit集成,为什么build origin/master branch 而不是 refs/changes/XX/X/X branch
- 网易云课堂程序设计入门—Java语言(第三周)
- 常用Maven插件介绍
- [wordpress搬家]软件推荐 — ProGuard
- 【Java】Java程序打包成jar包在Linux上运行
- Sublime Text添加插入带当前时间说明以及方法