Java异常

      Java程序运行过程中,经常会遇到异常情况,遇到最多的应该是NullPointException异常。今天有空,对异常进行了一次小总结。      

 Java规范中Exception是Throwable子类,Throwable还有另一个子类Error。Error一般是虚拟机抛出的比Exception更严重的异常,根据直译也可以叫做错误,属于虚拟机系统级错误,程序基本不可以通过后续代码修复,这里不做重点讨论。

                     

Exception下面有许多继承子类

        

Exception众多子类可以分为两种一种是受检异常(Checked exceptions),另一种是非受检异常(Checked exceptions)。

                          

针对这两种异常,它们处理方式是一样。两种处理方式, 1、在方法调用时处理掉catch,异常处理以后后续可以继续执行 2、向上层继续抛出throws,后续代码不再执行。以非受检异常说明这两种处理方式

catch处理

package com.cib.bean;
import org.junit.Test;

public class Order {
	private int i;
@Test
	public void test01() {
		try {
			i = 10 / 0;//以一种比较明显错误说明
		} catch (ArithmeticException e) {
			e.printStackTrace();
		}
         System.out.println("代码继续执行");
	}

	public int getI() {
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}

}
java.lang.ArithmeticException: / by zero
	at com.cib.bean.Order.test01(Order.java:10)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
代码继续执行

单元测试时候,运行到i = 10 / 0;  抛出了算术异常,这个时候我们对异常进行了处理,不影响后续打印代码可以继续执行。

throws处理

package com.cib.bean;

import org.junit.Test;

public class Order  {
	private int i;
	
	public void test01() throws ArithmeticException{
	     i=10/0;
        System.out.println("代码继续执行");
	}

	public int getI() {
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}

}
这个时候运行,程序执行到 i=10/0;时 系统直接报出异常,后续代码不继续执行,System.out.println("代码继续执行"); 没有执行下去,程序终止。

以上两种处理方式比较,可以得到这样的结论:

对于出现异常代码throws,那么出现异常处代码其后代码不再继续执行。如果catch处理,不影响异常代码后续代码处理。

另外,当我们在其他方法中调用一段代码,这段代码通过throws抛出异常,这个时候需要也对异常进行处理,否则编译不通过。

end~~~欢迎交流,指正




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值