JAVA 异常处理
来源:互联网 发布:java httpclient 保持 编辑:程序博客网 时间:2024/05/29 14:34
异常处理格式
在Java 中使用 try....catch 进行异常的处理
try{
可能出现异常的语句
}catch(异常类 异常对象){
异常处理
}catch(异常类 异常对象){
异常处理
}catch(异常类 异常对象){
异常处理
}。。。
finally{
异常的出口;
}
package org.exceptiondemo;public class ExceptionDemo02 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint i = 10;int j = 0;System.out.println("******* 计算开始 *******");try{System.out.println("计算结果:"+i/j);}catch(ArithmeticException e){System.out.println("出现了数学异常:"+e);}System.out.println("******* 计算结束 *******");}}
package org.exceptiondemo;public class ExceptionDemo01{/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint i = 10;int j = 0;System.out.println("******* 计算开始 *******");try{System.out.println("计算结果:"+i/j);}catch(ArithmeticException e){System.out.println("异常原因:"+e);}finally{System.out.println("不管是否有异常,我都执行");}System.out.println("******* 计算结束 *******");}}
package org.exceptiondemo;public class ExceptionDemo02{/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint i = 0 ;int j = 0;System.out.println("******* 计算开始 *******");try{i = Integer.parseInt(args[0]);j = Integer.parseInt(args[1]);System.out.println("计算结果:"+i/j);}catch(ArithmeticException e){System.out.println("出现了数据学异常:"+e);}catch(NumberFormatException e){System.out.println("输入的不是数字:"+e);}catch(ArrayIndexOutOfBoundsException e){System.out.println("输入的参数个数不对:"+e);}finally{System.out.println("不管是否有异常,我都执行");}System.out.println("******* 计算结束 *******");}}
那么寻于本程序来讲,实际上还是有可能出现其他异常的。
异常处理流程
1. 对于java 来讲,每当程序中出现了异常,实际上都是产生了一个异常类的实例化对象
这种处理格式实际上非常类似于方法传参,只要参数类型匹配了,则就可以使用此catch进行处理
实际上异常处理的最大父类:Throwable,但是一般开发中不会使用此种方式处理,因为其下有两个子类
Error: Error 一般表示JVM错误,与程序无关
Exception:一般指的是程序中的错误,所以一般开发中如果要想进行程序的处理,其本上是使用此类表示.
一般来讲在程序捕获的时候不要出现Throwable,因为表示的范围太大了
package org.exceptiondemo;public class ExceptionDemo02{/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint i = 0 ;int j = 0;System.out.println("******* 计算开始 *******");try{i = Integer.parseInt(args[0]);j = Integer.parseInt(args[1]);System.out.println("计算结果:"+i/j);}catch(ArithmeticException e){System.out.println("出现了数据学异常:"+e);}catch(NumberFormatException e){System.out.println("输入的不是数字:"+e);}catch(ArrayIndexOutOfBoundsException e){System.out.println("输入的参数个数不对:"+e);}catch(Exception e){System.out.println("其它异常:"+e);}finally{System.out.println("不管是否有异常,我都执行");}System.out.println("******* 计算结束 *******");}}
但是,在异常捕获的时候,有一个注意:捕获更细的异常需要放在捕获更粗的异常之前
package org.exceptiondemo;public class ExceptionDemo02{/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint i = 0 ;int j = 0;System.out.println("******* 计算开始 *******");try{i = Integer.parseInt(args[0]);j = Integer.parseInt(args[1]);System.out.println("计算结果:"+i/j);}catch(Exception e){System.out.println("出现了数据学异常:"+e);}finally{System.out.println("不管是否有异常,我都执行");}System.out.println("******* 计算结束 *******");}}
throws 关键字
在程序的方法声明处可以使用throws 关键字,使用此关键字的最大好处:在方法中不处理任何的异常,而交给被调用处处理。
package org.exceptiondemo;class Math{public int div(int i,int j)throws Exception{ int temp = i/j; return temp;}}public class ExceptionDemo03 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubMath mt = new Math();try{mt.div(10, 0);}catch(Exception e){System.out.println("异常:"+e); //e.printStackTrace(); 异常明细 }}}
package org.exceptiondemo;class Math{public int div(int i,int j)throws Exception{ int temp = i/j; return temp;}}public class ExceptionDemo03 {/** * @param args */public static void main(String[] args) throws Exception {// TODO Auto-generated method stubMath mt = new Math();mt.div(10, 0);}}如果在主方法处使用了throws 关键字的话,则所有的异常交给最大的头:JVM进行处理
throw 关键字
在程序中可以使用throw 关键字人为抛出一个异常
在异常的处理中,实际上每次产生异常的时候都是产生了一个异常类的实例化对象。那么此时,也可以通过抛出异常对象的方式完成。
package org.exceptiondemo;public class ExceptionDemo04 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubtry{throw new Exception("抛着玩"); //人为抛出}catch(Exception e){e.printStackTrace();}}}
异常的标准格式
进入方法执行计算前要有输出
此方法执行完之后也要有输出
如果有异常,则交给被调用处处理
package org.exceptiondemo;class Math1{public int div(int i,int j)throws Exception{int temp = 0; System.out.println("计算前显示-------------"); try{ temp = i/j; }catch(Exception e){ throw e; }finally{ System.out.println("计算后显示-------------"); } return temp;}}public class ExceptionDemo05 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubMath1 mt = new Math1();try{System.out.println(mt.div(10,0));}catch(Exception e){e.printStackTrace();}}}
自定义异常
一个类只要继承了Exception则就表示一个自定义异常,当发现系统中提供的异常不够的时候就可以这样做
package org.exceptiondemo;class MyException extends Exception{public MyException (String msg){super(msg);}}public class MyExceptionDemo01 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubtry{throw new MyException("自定义异常");}catch(Exception e){e.printStackTrace();}}}
- 【java】java异常处理
- java异常和异常处理
- Java 异常及异常处理
- java异常与异常处理
- Java异常处理-----自定义异常
- Java异常与异常处理
- java异常及异常处理
- Java 异常与异常处理
- Java异常与异常处理
- Java异常及异常处理
- Java异常处理--自定义异常
- JAVA异常之异常处理
- Java异常处理-----自行处理
- Java异常处理-----抛出处理
- Java异常处理-----抛出处理
- java异常处理
- java 异常处理分析
- java异常处理
- JavaScript专题——专题三 JavaScript 面向对象
- codeforces 219A
- 网络抓包工具抓取本地环回接口127.0.0.1的数据包
- H-JTAG提示错误及解决办法
- 分享python def和lambda的一点心得
- JAVA 异常处理
- OSCHINA答读者问之一:“软件工程”的学法与用法
- 在ubuntu 11.10下安装ns2-allinone-2.35.tar.gz
- poj1245解题报告
- 函数式编程
- Java基础 Annotation
- 123
- Shell 进程前台与后台转换方法
- 设计模式——适配器模式(NBA里有翻译)