Java SE 075 异常笔试面试常见问题深度剖析

(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

Java SE 075 异常笔试面试常见问题深度剖析

1.处理异常时可以有多个catch块

1.1定义自定义异常类1

package com.javareview.exception;
/**
 * 自定义异常
 * @author xiongjie
 */
public class MyException extends Exception{
	public MyException(){
		super();
	}
	
	public MyException(String message){
		super(message);
	}
}

1.2定义自定义异常类2

package com.javareview.exception;
/**
 * 自定义异常2
 * @author xiongjie
 */
public class MyException2 extends Exception{
	public MyException2(){
		super();
	}
	
	public MyException2(String message){
		super(message);
	}
}

1.3测试处理异常时可以有多个catch块

package com.javareview.exception.test;
import com.javareview.exception.MyException;
import com.javareview.exception.MyException2;

/**
 * 测试处理异常时可以有多个catch块
 */
public class MyExceptionTest3 {
	public void method(String str) throws MyException, MyException2{
		if(null == str){
			throw new MyException("字符串不能为空!");
		}else if("hello".equals(str)){
			throw new MyException2("字符串不能为hello!");
		}else{
			System.out.println(str);
		}
	}
	/**
	 * 测试处理异常时可以有多个catch块
	 * @param args
	 */
	public static void main(String[] args){
		MyExceptionTest3 test = new MyExceptionTest3();
		try {
			test.method("hello");
		} catch (MyException e) {
			e.printStackTrace();
		}catch(MyException2 e){
			e.printStackTrace();
		}finally{
			System.out.println("异常处理结束!");
		}
		System.out.println("程序处理结束");
	}
}

2.要点记录

2.1解说

(1)虽然可以有多个catch块,但是异常类的排列顺序是按照子类与父类这种关系进行排列的。最底层的一定是一个子类型的。
(2)如果一旦多个catch块里面的异常类型存在继承关系的话,一定要将父类型的catch块放到后面,放在前面,后面的子类型就没法去执行了。因为根据java多态,任何类型的父类对象都可以赋给Exception 的e。

2.2小结

(1)我们可以使用多个catch块来捕获异常,这时需要将父类型的catch块放到子类型的catch块之后,这样才能保证后续的catch可能被执行,否则子类型的catch将永远无法到达。Java编译器会报编译错误。
(2)如果多个catch块的异常类型都是独立的,那么谁在前谁在后都是可以的。

3.try块中的语句注意事项

3.1try块中的return

如果try块中存在return语句,那么首先也需要将finally块中的代码执行完毕,然后方法再返回。

3.2try块中的System.exit(0)语句

如果try块中存在Stystem.exit(0),那么就将不会执行finally块中的代码,因为System.exit(0)会终止当前运行的java虚拟机,程序会在虚拟机终止前结束执行。

4.异常在项目开发中的另一种处理方式

首先将这个异常捕获,然后在catch块中throw new一个自己的异常类,然后在在方法的声明中throws一个自定义的异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风百草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值