zoukankan      html  css  js  c++  java
  • java学习之自定义异常

    因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象,所以对于这些特有的问题可以按照java的对问题封装的思想,将特有的问题,进行自定义的异常封装。

    自定义异常:

    需求:在本程序中,对于除数时-1,也视为u是错误的是无法进行运算的,那么就需要对这个问题进行自定义的描述。

    当在函数内部出现了throw抛出异常对象,那么必须要给对应的处理动作:

    要么在内部try catch处理,要么在函数上声明让调用者处理。

    一般情况下,函数内出现异常,函数上需要声明。

    发现打印结果中只有异常的名称,却没有异常的信息:

    因为自定义的异常并未定义信息。

    如何定义异常信息呢?

    因为父类中已经把异常信息的操作都完成了。所以子类只要在构造时,将异常信息传递给父类通过super语句,那么就可以直接通过getMessage方法获取自定义的异常信息。

    自定义异常:

      必须是自定义类继承Exception

    继承Exception原因:

      异常体系有一个特点:因为异常类和异常对象都被抛出。他们都具备可抛性,这个可抛性是Throwable这个体系中独有特点。只有这个体系中的类和对象才可以被throws和throw操作

    package com.dreamy.day04;
    
    /**
     * @author dreamy
     * 需求:在本程序中,对于除数时-1,也视为u是错误的是无法进行运算的,
     *    那么就需要对这个问题进行自定义的描述。
     */
    /*class Throwable{
        private String message;
        public Throwable(String message) {
            this.message=message;
        }
        public String getMessage() {
            return message;
        }
    }
    class Exception extends Throwable{
        public Exception(String message) {
            super(message);
        }
    }*/
    class FuShuException extends Exception {//getMessage();
        private int value;
        public FuShuException() {
            super();
        }
        public FuShuException(String msg,int value) {
            super(msg);
            this.value=value;
        }
        public int getValue() {
            return value;
        }
        
        
    }
    class Demo02{
        int div(int a,int b) throws FuShuException{
            if(b<0) {
                throw new FuShuException("出现了除数是负数的情况",b);//手动通过throw关键字抛出一个自定义异常对象。
            }
            return a/b;
        }
    }
    public class ExceptionDemo02 {
        public static void main(String[] args) {
            Demo02 d=new Demo02();
            try {
                int x=d.div(4, -1);
                System.out.println("x:"+x);
            }catch (FuShuException e) {
                System.out.println(e.toString());
    //            System.out.println("除数出现负数了");
                System.out.println("错误的负是:"+e.getValue());
            }
            System.out.println("over");
        }
    }
  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/8043899.html
Copyright © 2011-2022 走看看