温毛

Github:tatsumiw

导航

Java(异常、枚举)

异常

在程序执行过程中由于设计或设备原因导致的程序中断的异常现象叫做异常

在try-catch-finally代码块中,finally是一定会执行的部分,如果finally中有return部分,则一定是执行该return而不是try-catch的(所以一般不在finally中return)

finally块可以省略,根据需求决定是否需要finally块

自定义异常

public class ZDYException extends Exception {    
    public ZDYException() {}
    //定义带字符串参数的构造方法表示对此异常的说明描述
    public ZDYException(String masage) {
        super(masage);
    }
}


//一个实际案例
public class TestZDYException {
    public static void main(String[] args) throws ZDYException {
        check("123456");
    }
    //设计一个方法,完成邮箱格式的初步验证(判断传入的字符串是否包含@符)
    //若字符串包含@返回true,否则返回false并抛出自定义异常
    public static void check(String email){
        if(email.contains("@")) {
            System.out.println(true);
        }else {
            System.out.println(false);
            try {
                throw new ZDYException("没有@符");
            } catch (ZDYException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

 枚举

枚举是一个引用类型,枚举就是一个规定了取值范围的变量类型

public enum Season {  //枚举的定义
    SPRING("2-5月") {
        public void printMessage() {  //这里可以重构方法
            System.out.println("适合出游");
        }
    },
    
    SUMMER("5-8月"), 
    
    AUTUMN("8-11月") {
        public void printMessage() {
            System.out.println("适合出游");
        }
    },
    
    WINTER("11-1月");

    private String month;

    private Season(String month) { //私有方法必须私有化
        this.month = month;
    }

    public String getMonth() {
        return month;
    }

    public void setMonth(String month) {
        this.month = month;
    }

    public void printMessage() {
        System.out.println("不适宜出游");
    }
}

枚举的使用

  • ordinal():获得枚举序数

  • compareTo():枚举比较-序数做差

  • valueOf(Class<T> enumType, String name):[重要]指定要获取的枚举类型和元素,返回一个枚举对象

  • values():静态方法,获取枚举类型中的所有枚举元素,返回一个数组

String str = "春天";
Season season = Season.valueOf(Season.class, str);

switch (season) {
case SPRING:
case SUMMER:
case AUTUMN:
case WINTER:
    System.out.println("对应的月份是" + season.getMonth());
    season.printMessage();
    break;
default:
    break;
}

 

posted on 2018-07-31 15:07  Tatsumi_温毛  阅读(233)  评论(0编辑  收藏  举报