JAVA基础(三)异常处理

目录.

1.java异常体系

2.异常处理方法

3.异常处理原则

4.自定义异常


1.java异常体系

如图


Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。

Error 是程序无法处理的,这里不多说.

Exception下面分了  运行时异常和非运行时异常(CheckedException=非RuntimeException, UncheckedException=RuntimeException).


因为非运行时异常在编译的时候会进行校验,所以也叫受检查异常.这类异常必须明确的进行 捕获或抛出.


2.异常处理方法

对于非RuntimeException,有2种处理方法

1)抛出,如果一直抛出,最后JVM会处理(这样异常信息就会全部展示给用户)

2)用 try catch 进行 捕获.

对于RuntimeException,有3种处理方法

1)抛出,如果一直抛出,最后JVM会处理(这样异常信息就会全部展示给用户)

2)用 try catch 进行 捕获.

3)不处理,就像不会有异常一样


对比发现,非RuntimeException必须要处理,要么catch,要么throws


3.异常处理原则

1)java异常的主要目的就是将异常情况与正常代码区分开, 所以应该尽量使用RuntimeException

2)如果可以,异常应该尽早处理

3)项目中应有自己的异常体系,统一处理异常.

4)不能catch异常后什么都不做,最起码要打印个日志之类

5)如果有多个catch,一定要注意顺序,因为异常匹配到第一个符合的,就不再进行匹配


4.自定义异常

实际开发中,经常会用到自定义异常.一般自定义异常都是继承自RuntimeException.

下面来看一个自定义异常,验证上面所写.

public class BusiException extends RuntimeException {
	public BusiException(String message){
		super(message);
	}
	public BusiException(Throwable cause) {
		super(cause);
	}
	public BusiException(String message, Throwable cause) {
		super(message, cause);
	}
}

public class TestException {

	public static void main(String[] args) {
		TestException te = new TestException();
		te.catcheEx();
		try {
			te.throwsEx();
		} catch (FileNotFoundException e) {
			System.out.println("受检查异常,必须catch或者像子方法一样throws");
			e.printStackTrace();
		}
		te.castEx();
		
	}
	
	public void catcheEx(){
		try {
			FileOutputStream out = new FileOutputStream("");
		} catch (FileNotFoundException e) {
			System.out.println("捕获异常,只打印日志,不处理");
			e.printStackTrace();
		} catch(Exception e){
			System.out.println("这里是Exception,上面的异常匹配到后,不会执行到这里");
		}
	}
	
	public void throwsEx() throws FileNotFoundException{
		FileOutputStream out = new FileOutputStream("");
	}
	
	public void castEx(){
		try {
			FileOutputStream out = new FileOutputStream("");
		} catch (FileNotFoundException e) {
			System.out.println("将非RuntimeException封装为RuntimeException");
			throw new BusiException(e);
		}
	}

}

代码里面展示了 对异常的catch和throws, 以及将异常包装为自定义异常.

包装为自定义异常后,就可以统一对自定义异常处理.像上一篇里面说的那样.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值