• Java中的异常处理


    描述:

    如果Java中的函数有可能抛出异常,则该异常要么被catch住,要么在声明函数时必须声明该函数体会throws exception。

    处理的时候的流程是,当发生异常时,首先结束当前函数后续语句的执行,接着查看这个异常有无catch语句处理,如果没有则上浮至调用者。如果调用者没处理,继续上浮,直到处理位置,或者一直没处理则得到一条运行时错误并终止。如果在某一层被处理了,从catch语句开始继续执行。

    代码实现:

    package c04;
    
    import java.io.IOException;
    
    /**
     * @project: LearningJava
     * @filename: ExceptionTest.java
     * @version: 0.10
     * @author: Jimmy Han
     * @date: 7:05 2015/8/23
     * @comment: Test Purpose
     * @result:
     */
    public class ExceptionTest {
        static void func1(){
            System.out.println("enter func1");
            try{
                func2();
            }
            catch(IOException e){
                System.out.println("IOException handled in func1");
                e.printStackTrace(System.err);
            }
            System.out.println("continue func1");
        }
        static void func2() throws IOException{
            System.out.println("enter func2");
            func3();
            System.out.println("continue func2");
        }
        static void func3() throws IOException{
            System.out.println("enter func3");
            func4();
            System.out.println("continue func3");
        }
        static void func4() throws IOException{
            System.out.println("enter func4");
            throw new IOException();
            //Never reach compile error
            //System.out.println("continue func4");
        }
    
        static void func5(){
            System.out.println("enter func5");
            System.out.println("continue func5");
        }
    
        public static void main(String[] args) {
            func1();
            func5();
        }
    }

    输出:

    java.io.IOException
    	at c04.ExceptionTest.func4(ExceptionTest.java:38)
    	at c04.ExceptionTest.func3(ExceptionTest.java:33)
    	at c04.ExceptionTest.func2(ExceptionTest.java:28)
    	at c04.ExceptionTest.func1(ExceptionTest.java:18)
    	at c04.ExceptionTest.main(ExceptionTest.java:49)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:483)
    	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
    enter func1
    enter func2
    enter func3
    enter func4
    IOException handled in func1
    continue func1
    enter func5
    continue func5
    

      

  • 相关阅读:
    Tennix — 开源的网球游戏
    Tile Racer — 3D 赛车游戏
    51CTO网管生活
    分割图片的例子 回复 "小熊宝" 的问题
    图解 CSS (5): font 字体
    图解 CSS (9): 列表
    图解 CSS (11): 理解样式表的逻辑
    图解 CSS (8): 浮动、显示、隐藏
    图解 CSS (10): 链接、继承、放缩、鼠标指针、其他(待补充...)
    多线程编程(2) 从 CreateThread 说起
  • 原文地址:https://www.cnblogs.com/dracohan/p/4751868.html
Copyright © 2020-2023  润新知