Exception和RuntimeException

之前不小心弄出来一个空指针异常(NullPointException),然后程序直接崩溃了。简单学习了下RuntimeException和Exception的区别。

先看下类继承图,显而易见NullPointException是RuntimeException子类。


这里补充下,java中定义了两类异常:
1、检查型异常(CheckedException):这类异常都是Exception的子类。异常的向上抛出机制进行处理,加入子类可能产生A异常,那么父类中也必须throwsA异常,可能导致的问题:代码效率低,耦合度过高。
2、非检查型异常(UncheckedException):这类异常都是RuntimeException的子类,不能通过clientcode来试图解决。
在Java的异常中,Error和RuntimeException是非检查型异常,其他的都是检查型异常。另外,所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类。
举个例子,下面的main方法里面没显式声明throws任何Exception,但是却可以抛出NullPointException,也就是RuntimeException。另外在mayThrowsException()中显式地抛出了Exception。当processException()调用该方法时,必须使用try...catch...进行处理。否则编译出错。
package my;

public class TestException {
	
	private String desc;

	public String getDesc() {
		return desc;
	}

	public void setDesc(String desc) {
		this.desc = desc;
	}

	public static void main(String[] args) {
		TestException e = null;
		System.out.println(e.getDesc());
	}
	
	private void processException() {
		try {
			mayThrowsException();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void mayThrowsException () throws Exception {
		throw new Exception("My Exception");
	}
}




从这也能看出Java中Exception和RuntimeException的概念:
Exception:在程序中必须使用try...catch...进行处理。
RuntimeException:可以不使用try...catch...进行处理,但是若有异常产生,则异常将由JVM进行处理。
显而易见,所有的非RuntimeException都需要我们来处理。 当然,对于RuntimeException我们最好也用try...catch...处理。否则一旦异常发生,会导致程序中断。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值