zoukankan      html  css  js  c++  java
  • 异常和错误

    当我们执行一个方法的时候这个方法可能存在异常,异常发生了是停止继续运行的,所以我们需要通过try{}catch( ){ }去捕获异常

    public class Demo {
        int chufa(int a,int b) {
            return a/b;
        }
    
        public static void main(String[] args) {
            try{
              new Demo().chufa(1,0);
            }catch (ArithmeticException e) {
          // 由于能预见被除数不能为0这个异常是ArithmeticException类所以e的类类型是他,当然写父类也是可以的 System.out.println(e); }
    finally {
           // 这里面的代码不管异不异常都会执行 System.out.println(
    "我是用来关闭IO流的"); } } }

     那么引出一个问题既然catch里面写最高类和精确的子类都是一样的,那么我所有错误都写最高类好了,反正都能捕捉到,那么写子类的场景在哪

    try{
           new Demo().chufa(1,0);
            }catch (ArithmeticException e) {
                System.out.println(e);
            }catch (MissingResourceException e){
            // 因为不是MissingResourceException错误类型所以不会执行到这 System.out.println(
    "我是丢失资源异常"); }catch (Exception e){ System.out.println(e); }finally { System.out.println("我是用来关闭IO流的"); }
    // 不难看出想要针对精确到各种类型做处理的时候用精确的子类了,这里面有个连用catch相当于if else (不是if) 所以连续catch类型要从小到大不然会报错已经捕捉过了

    接下来就是我需要自定义一个异常类(一般在架构会使用)

    // 第一步继承 Exception
    public class myException extends Exception{
        // 第二步重写toString方法  
        @Override
        public String toString() {
            return "方法有异常";
        }
    }

    使用自定义类

    // 第一步方法抛出throws myException这是最重要的一步
    int chufa(int a,int b) throws myException{
            if(b == 0){
                throw new myException(); // 第二步主动抛出异常,如果不写捕获不到你的错误信息了
            }
            return a/b;
        }
    // 可以使用了
    catch (myException e){
    System.out.println(e);
    }
    你的努力有资格到拼天赋的程度吗?
  • 相关阅读:
    东软中标清华大学一站式服务平台项目
    抢占DevOps制高点,东软UniEAP&SaCa平台强势崛起
    智慧监狱来了!SaCa EMM 助推现代监狱建设迈上新台阶
    移动金融办公威胁不断,这些坑千万别跳!
    比悲伤更悲伤的故事,那就是...
    这还是你见过的大学实验室吗?
    越智能?越危险?技术到底应不应该进步?
    新一代的IT实验室长啥样?
    产品“佩奇”闹元宵,新春点亮新网站
    危机四伏的千亿级金融放贷市场,我们能做什么?
  • 原文地址:https://www.cnblogs.com/wchjdnh/p/14425944.html
Copyright © 2011-2022 走看看