java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2019-08-26 15:24:39 | 查看: 5085| 回复: 0

java异常概述

java异常概述

异常就是在程序的运行过程中出现的不正常现象导致了程序中断

之前遇到的异常有哪些?

空指针异常: NullPointerException

类型转换异常: ClassCastException

算术异常: ArithmeticException

在java中, 把一些不正常现象进行了抽象, 形成了一些异常类

java异常概述_www.wityx.com

在Throwable类的getMessage()/printStackTrace()这两个方法,所有的异常都有

编译时异常,也称受检异常是指在编译前必须进行预处理, 并不是说这个异常在编译阶段发生,所有的异常都是在运行阶段才可能发生. 就像楼道中必须有灭火器与消防栓, 如果没有这些设备, 就没有安全证, 没有这个安全证,企业就不能生产. 企业必须有火灾的预处理措施, 火灾现在并没有发生

编译阶段进行语法检查, Java的语法有很多条, 其中一语语法是: 对于受检异常必须进行预处理

package com.wkcto.chapter02.demo01;
/**
 * 运行时异常都是RuntimeException类的子类 
 * 	不需要进行预处理, 
 * 	通过规范的代码进行规避
 * @author 蛙课网
 *
 */
public class Test01 {
	public static void main(String[] args) {
		int x = 10;
		int y = 2;
//		divide(x, y); 		//10/2=5
//		divide(10, 0);		//这一行产生了异常,导致了程序中断, 程序不再继续向下执行
		
		divide22(x, y);
		divide22(10, 0);
		
		System.out.println("main....end...");
	}
	
	//定义方法,计算两个整数的商, 没有判断除数为0的情况
	public static void divide( int num1, int num2) {
		int result = num1/num2;
		System.out.println( num1 + "/" + num2 + "=" + result);
	}
	//定义方法,计算两个整数的商, 通过判断除数为0避免出现算术异常
	public static void divide22( int num1, int num2) {
		if ( num2 == 0  ) {
			System.out.println("除数不能为0");
			return ;			//结束方法的执行
		}
		int result = num1/num2;
		System.out.println( num1 + "/" + num2 + "=" + result);
	}
}

package com.wkcto.chapter02.demo01;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * 演示编译时异常
 * 		受检异常, 受控异常
 * @author 蛙课网
 *
 */
public class Test02 {

	public static void main(String[] args) {
		
		//读取d:/abc.txt文件中的内容, 使用了FileInputStream类
		
		FileInputStream fis = new FileInputStream("d:/abc.txt");
		//SUN在定义FileInputStream构造方法时, 通过 throws关键字声明了FileNotFoundException异常,
		//这个异常就是受检异常, 即在定义方法时, 通过throws声明的异常
		//受检异常在编译前必须进行预处理, 否则编译语法报错
	}

}


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1149_1_1.html


java面试题交流群:327440556

上一篇:java异常处理 下一篇:java内部类
您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018