Java异常机制介绍及try...catch... ——恋天小结

异常机制

异常
就是错误的另外一种说法

性质
鲁棒性
就是系统的健壮性

异常分两种
编译时
在执行javac命令出错,是编译时
在eclipse中 没有运行 就报错,就是编译时
运行时
执行java命令出错,是运行时

在java中有一个专门模拟所有异常和错误的类(Throwable) 所有的异常类都必须继承这个类

try…catch

try…catch…: 一般用在客户端
语法 :
try{

		高风险代码;

	}catch(异常类型 变量){

		错误的处理机制;

	}

使用try…catch…不会再终止生命周期,所以叫错误就不太合适了,而应该是一种对可能出现错误的地方做出对应的提示操作,使我们的异常,成为了正常程序中的一部分

public class Exception_01 {

	public static void main(String[] args) {
		int a = 10;
		int b = 1;
		if(b == 0) {
			System.out.println("除数不能为0");
		}else {
			int c = a/b;
			System.out.println(c);
		}
		try {
			 int c = a/b;
			 System.out.println(c);
		}catch(Exception e) {
			e.printStackTrace();
			System.out.println("除数不能为0");
			
		}
		System.out.println("-------");

	}

}

1 用异常类和异常类的父类都可以捕捉

2 捕捉之后的处理措施
1 打印追踪栈帧
printStackTrace();
2 错误栈帧的内存地址
getStackTrace();
3 错误提示信息
getMessage();

public class Exception_02 {

	public static void main(String[] args) {
		try {
			FileInputStream fis = new FileInputStream("asdasd.txt");
			
		}catch(FileNotFoundException e) {
			e.printStackTrace();
			System.out.println("--------");
			System.out.println(e.getStackTrace());
			System.out.println("------------");
			System.out.println(e.getMessage());
			
		}

	}

}
try...catch

try{
可能出现异常的代码;
}catch(异常类型1 变量){
处理措施;
}catch(异常类型2 变量){
处理措施;
}catch(异常类型3 变量){
处理措施;
}
1 catch 语句可以根据代码的异常写多个
2 从上往下,必须是从子类到父类,或者没有继承关系,要不然会因为多态的原因,把子类异常捕捉
3 虽然写了多个catch,但是只会有一个 执行,因为最先出错的语句之后的代码不执行,直接执行catch

public class Exception_04 {

	public static void main(String[] args) {
		try {
			//FileNotFoundException
			new FileInputStream("");
			String s = null;
			//NullPointerException
			s.equals("");
			
		}catch(FileNotFoundException e){
			System.out.println("找不到指定文件");
		}catch(NullPointerException e){
			System.out.println("不能使用null调用成员属性");
			
		}catch(Exception e){
			System.out.println("其他异常");	
		}
	}
}
	  java1.7开始,有一个新的写法,一次catch 多个异常,但是 多个异常之间不能有继承关系,如果有就直接写父类
		 catch(异常类型1 | 异常类型2| 异常类型3|....  变量)
		可以对多个异常,做相同的处理操作
public class Exception_05 {

	public static void main(String[] args) {
		try {
			//FileNotFoundException
			new FileInputStream("");
			String s = null;
			//NullPointerException
			s.equals("");
		}catch (FileNotFoundException | NullPointerException e) {
			System.out.println("1111111111111");
		} catch (Exception e) {
			System.out.println("22222222222");
		}
	}

}

不同的异常机制的选择
1 有些错误我们不想处理,或者没有办法处理(这个通常就是在类库中),这个时候就把错误信息交给调用人员,这种情况 直接使用throws
2 我们能够处理的,就try…catch…(一般在客户端,main)

Throwable异常类的祖类

Exception
直接子类都是编译时异常,只有一个RunTimeException是运行时异常

Error
系统内部错误,比如栈内存溢出,虚拟机错误等,这种情况JVM会选择终止程序,不需要我们做操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值