1.当我们对throw的对象进行try catch之后
public void re(int i) {
        if (i > 5){
            this.i = i;
        }else {
            try {
                throw new Exception("数据非法!");
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("123");
        }
结果显示:123被输出
java.lang.Exception: 数据非法!
	at com.zsxfa.java.Ex3.re(ExcTest1.java:21)
	at com.zsxfa.java.ExcTest1.main(ExcTest1.java:10)
123
2 不对throw的对象进行try catch操作
  • 2.1
public void re(int i) throws Exception {
        if (i > 5) {
            this.i = i;
        }else {
            throw new Exception("数据非法!");
            System.out.println("123");  
        }
结果显示:编译不通过
  • 2.2
public void re(int i) throws Exception {
        if (i > 5) {
            this.i = i;
        }else {
            throw new Exception("数据非法!");
        }
        System.out.println("123");
结果显示:异常抛出,123不会输出
java.lang.Exception: 数据非法!
	at com.zsxfa.java.Ex2.re(ExcTest.java:30)
	at com.zsxfa.java.ExcTest.main(ExcTest.java:11)
数据非法!

拓展

		try{
			return;
		}catch(){
			
		}finally{
		
		}
		return;

上面的代码的执行顺序是这样的:

代码段首先进入try语句,因无异常抛出,代码将要return的内容保存在内存中,然后执行finally,因finally中无可执行内容,再转回try中执行return,整个代码段执行结束,而finally后面的return是不会执行的。

1、不管有没有出现异常,finally块中代码都会执行;

2、当try和catch中有return时,finally仍然会执行;

3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,
而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改
变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;

4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐