• Java(15):异常


    异常

    e

    error错误由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。Exception是可以被程序处理的,并且程序应该尽可能去处理这些异常。

    五个关键字:

    try、catch、finall、throw、throws。

    public class Application{
        public static void main(String[] args) {
            int a = 1;
            int b = 0;
    
    
            try {
                int c = a / b;
            }catch (Exception e){
                System.out.println(e);
            }finally {
                // finally 可以不要
                System.out.println("不管怎么样都会执行我");
            }
        }
    
    }
    

    可以写多个catch语句来捕获不同的异常,得注意异常程度必须由低到高(见最上面的示意图):

    public class Application{
        public static void main(String[] args) {
            int a = 1;
            int b = 0;
    
    
            try {
                int c = a / b;
            }catch (Error r){ // 多个异常捕获必须由低到高
                System.out.println("Error");
            }catch (Exception e){
                System.out.println("Exception");
            }catch (Throwable t){
                System.out.println("Throwable");
            } finally {
                // finally 可以不要
                System.out.println("不管怎么样都会执行我");
            }
        }
    
    }
    

    最后的执行结果是打印出“Exception”。

    idea中选中代码、CTRL+ALT+T快捷生成异常代码。

    主动抛出异常。

    throw一般用在方法中抛出异常。然后就可以用try-catch捕获异常,如果在当前代码中不方便使用try-catch捕获异常,那么可以在方法上用throws抛出异常,让其他地方try-catch捕获异常。

    if (b == 0){
       throw new Exception(); // 主动抛出异常
    }
    int c = a / b;
    

    异常假设方法中处理不了这个异常,throws用在方法上抛出异常:

    public class Application{
        public static void main(String[] args) {
            int a = 1;
            int b = 0;
            new Application().test(a, b);
    
        }
        public void test(int a, int b) throws ArithmeticException{ // 方法上throws
            if (b == 0){
                throw new ArithmeticException(); // 主动抛出异常
            }
            System.out.println(a/b);
        }
    
    }
    

    自定义异常

    使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。只需要继承Exception类即可。

    大体有以下几个步骤:

    1. 创建自定义异常类。
    2. 在方法中通过throw关键字抛出异常对象。
    3. 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
    4. 在出现异常方法的调用者中捕获并处理异常。

    。。。。

  • 相关阅读:
    面向对象设计模式之Facade外观模式(结构型)
    Android 多线程:使用Thread和Handler
    Android源码分析之Handler
    Android View的几个位置坐标关系
    LinearLayout布局问题
    Android app被系统kill的场景
    改变Activity启动时的默认动画
    ViewStub源码分析
    Android measure过程分析
    点击ViewGroup时其子控件也变成pressed状态的原因分析及解决办法
  • 原文地址:https://www.cnblogs.com/zhangtu/p/14492281.html
Copyright © 2020-2023  润新知