博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中的异常处理
阅读量:2442 次
发布时间:2019-05-10

本文共 3841 字,大约阅读时间需要 12 分钟。

java中的异常处理

第一种: JVM默认处理方式

如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行并且还终止了程序,异常后面的代码将不在执行

package com.itheima_01;import java.io.FileWriter;import java.io.IOException;/* * 	异常的处理方式: * 		 *  *  jvm处理异常的方式: *  	如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行 *  	并且还终止了程序,异常后面的代码将不在执行 */public class ExceptionDemo2 {	public static void main(String[] args) throws Exception {	   System.out.println(2/0);	   System.out.println("hello");     			}	 }

第二种:try…catch方式处理异常

捕获:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理捕获异常格式:

try {

//需要被检测的语句。

}

catch(异常类 变量) { //参数。

//异常的处理语句。

}

finally {

//一定会被执行的语句。

}

try:该代码块中编写可能产生异常的代码。

catch:用来进行某种异常的捕获,实现对捕获到的异常进行处理。

package com.itheima_01;import java.io.FileWriter;import java.io.IOException;/* * 	异常的处理方式: * 			捕获处理 * 				try...catch语句 *  * 				try { * 					有可能出现问题的代码; * 				} catch(ArithmeticException ae) { * 					处理异常; * 				} *  * 				try...catch的执行顺序: * 					首先执行try语句 * 						如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束 * 						如果没有发现异常,try语句执行结束后,try...catch直接结束, 不在执行catch语句 *  *   * 		 *  *  jvm处理异常的方式: *  	如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行 *  	并且还终止了程序,异常后面的代码将不在执行 */public class ExceptionDemo2 {	public static void main(String[] args) throws Exception {		try {			System.out.println(1);			//System.out.println(2 / 0);			System.out.println(2);		} catch(ArithmeticException ae) {			System.out.println("除数不能为0");		}				System.out.println(3);			}}

第三种: throws方式处理异常

A:throws使用:

   权限修饰符 返回值类型  方法名(形参列表) throws 异常类型1,异常类型2….{

}  

package com.itheima_01;import java.io.FileWriter;import java.io.IOException;/* * 	异常的处理方式: * 			捕获处理 * 				try...catch语句 *  * 				try { * 					有可能出现问题的代码; * 				} catch(ArithmeticException ae) { * 					处理异常; * 				} *  * 				try...catch的执行顺序: * 					首先执行try语句 * 						如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束 * 						如果没有发现异常,try语句执行结束后,try...catch直接结束, 不在执行catch语句 *  *  * 			抛出去 * 				当我们不想处理异常,或者没有能力处理的时候,我们可以选择抛出异常,谁调用方法谁处理异常 * 				使用关键字throws在方法的声明出抛出异常 * 		 *  *  jvm处理异常的方式: *  	如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行 *  	并且还终止了程序,异常后面的代码将不在执行 */public class ExceptionDemo2 {	public static void main(String[] args) throws Exception {		//method();				function();			}		public static void function() throws Exception {		FileWriter fw = new FileWriter("a.txt");	}	private static void method() {		try {			System.out.println(1);			//System.out.println(2 / 0);			System.out.println(2);		} catch(ArithmeticException ae) {			System.out.println("除数不能为0");		}				System.out.println(3);	}}

第四种:多异常处理

A:对代码进行异常检测,并对检测的异常传递给catch处理。对每种异常信息进行不同的捕获处理。

void show(){ //不用throws

try{

throw new Exception();//产生异常,直接捕获处理

}catch(XxxException e){

//处理方式

}catch(YyyException e){

//处理方式

}catch(ZzzException e){

//处理方式

}

}

注意:这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。

package com.itheima_01;/* * 	如何处理多个异常: * 		可以使用多个try...catch语句 * 		使用一个try和多个catch *  * 多个catch之间的顺序: * 			多个catch之间可以有子父类 * 			平级之间没有顺序关系 * 			如果有子父类,父类异常必须放在后面 * 			 * 	 */public class ExceptionDemo3 {	public static void main(String[] args) {		try {			String s = null;			System.out.println(s.length());						//int[] arr = new int[5];			//System.out.println(arr[8]);						//System.out.println(2 / 0);					} 				catch(ArrayIndexOutOfBoundsException e) {			System.out.println("出现数组越界了");		} 		catch(NullPointerException e) {			System.out.println("出现空指针了");		}		catch(Exception e) {			System.out.println("出现异常了");		}		/*try {		} catch(ArrayIndexOutOfBoundsException e) {			System.out.println("出现数组越界了");		}*/			}	private static void method() {		try {			String s = null;			System.out.println(s.length());		} catch(NullPointerException e) {			System.out.println("出现空指针了");		}				try {			int[] arr = new int[5];			System.out.println(arr[8]);		} catch(ArrayIndexOutOfBoundsException e) {			System.out.println("出现数组越界了");		}	}}

转载地址:http://knjqb.baihongyu.com/

你可能感兴趣的文章
C#中实现DataGrid双向排序(转)
查看>>
利用C语言小程序来解决大问题(转)
查看>>
简单方法在C#中取得汉字的拼音的首字母(转)
查看>>
.NET开发之中的17种正则表达式小结(转)
查看>>
编程秘籍:使C语言高效的四大绝招(转)
查看>>
计算机加锁 把U盘变成打开电脑的钥匙(转)
查看>>
Fedora Core 4 基础教程 (上传完毕)(转)
查看>>
删除MSSQL危险存储过程的代码(转)
查看>>
红旗软件:树立国际的Linux品牌(转)
查看>>
Linux学习要点(转)
查看>>
影响mysqld安全的几个选项(转)
查看>>
最新版本Linux Flash 9 Beta开放发布(转)
查看>>
mysql事务处理(转)
查看>>
Fedora 显示设备配置工具介绍(转)
查看>>
FREEBSD 升级及优化全攻略(转)
查看>>
系统移民须知:Linux操作系统安装要点(转)
查看>>
在redhat系统中使用LVM(转)
查看>>
Gentoo 2005.1 完整的USE参数清单中文详解(转)
查看>>
如何在嵌入式Linux产品中做立体、覆盖产品生命期的调试 (5)
查看>>
手机最新触控技术
查看>>