程序员旅行·在路上

2019-08-17(Java 泛型类与异常处理)

2019-08-17  本文已影响5人  书虫大王X

1.知识点:

1.泛型类
2.异常处理

2.知识点的运用:

1.在实际运用中,用到泛型的地方并不多,所以在这里只介绍泛型类:

泛型类的一般格式:

//泛型标识:可以随便写任意标识号,标识指定的泛型的类型
class 类名称 <泛型标识>{
//泛型变量
  private 泛型标识  a; 
//泛型方法
public 返回值  函数名 (参数类型 形参名,泛型标识 形参名){
        //函数体
    }  
}

例:

public class MyClass {
    public static void main(String[] args){
        GenericTest<Integer> genericTest = new GenericTest<>();
        genericTest.test(10,10);
    }
}
class GenericTest<T>{
    int age;
    T a1;
    T a2;
    public void test(T a1, T a2){
        this.a1 = a1;
        this.a2 = a2;
        System.out.println(a1);
        System.out.println(a1.equals(a2));
    }
}
2.异常处理:
  1. getCause():返回抛出异常的原因。如果 cause 不存在或未知,则返回 null。
  2. getMessage():返回异常的消息信息。
  3. printStackTrace():对象的堆栈跟踪输出至错误输出流,作为字段 System.err 的异常链顾名思义就是将异常
    发生的原因一个传一个串起来,即把底层的异常信息传给上层,这样逐层抛出。
3 . 异常处理的实际运用:
        FileReader reader = null;
        try {
            System.out.println("Hello");
            reader = new FileReader("re");
            
        }catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            try{
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //try括号中只能添加可以关闭的对象
        //实现了Closeable接口的对象,如果出现异常,系统自己关闭这个资源
        try (FileReader reader1 = new FileReader("rewrwr")){
            //使用对象
        }catch (IOException e){
            e.printStackTrace();
        }
        try {
            TException.test();
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }

        try {
            TException.test3();
        }catch (ykException e){
            System.out.println(e.getMessage());
        }
//自定义类:
class TException{
    public static void test() throws  FileNotFoundException,NullPointerException{
        FileReader reader = new FileReader("fsf");

    }
    //三:
    public static void test2()throws IllegalAccessException {
        if (2 > 1){
            throw new IllegalAccessException();
        }
    }
}
        try {
            TException.test3();
        }catch (ykException e){
            System.out.println(e.getMessage());
        }
class TException{
    public static void test3() throws ykException {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        StackTraceElement e = stackTrace[2];
        String detail = e.getFileName()+"->"+e.getMethodName()+"->"+e.getLineNumber();
        throw new ykException( "自己的异常类:无所作为"+detail);
    }
}
//自定义异常
class ykException extends java.lang.Exception{
    //提供一个无惨构造方法
    public ykException (){}
    //提供一个有惨构造方法
    public ykException(String desc){
        super(desc);
    }
}
4.部分总结:
try{
//执行的代码
//一旦出现异常,系统自动为我们创建异常类,并输出
 }catch(NullPointerException  e){
//如果需要自己处理异常,就catch
 }catch(IOExcepton e){

 //如果有多个异常,catch的顺序是从小到大
}catch(Exception e){

}finally{
 //资源回收:网络连接 数据库连接 文件流 I/O流
// 不关也没有异常,finally都会被执行
}
上一篇 下一篇

猜你喜欢

热点阅读