美文网首页
【Java学习】泛型的简单使用|异常处理

【Java学习】泛型的简单使用|异常处理

作者: 榆野铃爱 | 来源:发表于2019-08-17 22:51 被阅读0次

心得体会

一开始我也不太理解泛型,后面按老师说的自己尝试去写一个简单的ArrayList方法后,才真正理解了。当然说是自己写,其实大部分都是参考源码来敲,但是这样做真的有利于加深对列表和泛型的理解。异常处理感觉还是很实用的,而且处理方法也很简单。


内容简概

  • 一、泛型的简单使用
  • 二、异常类的层次结构
  • 三、处理异常的五个关键字
  • 四、异常的处理方法
  • 五、自定义异常类
  • 六、自定义异常类的使用(throw和try...catch的联合使用)

具体内容

  • 一、泛型的简单使用

1. 概念
Java中有多种数据类型,而泛型,顾名思义,不是一种广泛的数据类型,它包括其他大部分数据类型。
2. 为什么要用泛型?
泛型的使用非常广泛,如泛型类、泛型方法、泛型接口。就拿泛型和数组来说,一个数组中可以存放不同的数据类型,那编写这个数组类时,就需要用一个东西来替代传入的参数类型,而这个参数类型不确定,这时就需要用到泛型了。
3. 泛型常见字母含义
格式: 类名<字母列表>  class Person<T>{}

字母 含义
E Element 元素
K Key 键
N Number 数值
T Type 类型
V Value 值
? 不确定的类型

4. 泛型的简单使用
运行结果为:False

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.equals(a2));
    }
}
public class MyClass {
    public static void main(String[] args){
        //<T>被替换成<String>
        GenericTest<String> g1 = new GenericTest<>();
        g1.test("jack","jacker");
    }
}

二、异常类的层次结构

Java的异常是一个对象,所有的异常都直接或间接地继承Throwable类。Throwable类的继承层次结构如下:

异常类的层次结构

三、处理异常的五个关键字

关键字               用法
try 它里面放置可能引发异常的代码
catch 后面对应异常类型和一个代码块,用于表明该catch块用于处理这种类型的代码块,可以有多个catch块。
finally 主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件),异常机制总是保证finally块总是被执行。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者 throw等终止方法的语句,则就不会跳回执行,直接停止。
throw 用于抛出一个实际的异常,可以单独作为语句使用,抛出一个具体的异常对象。
 throws  用在方法签名中,用于声明该方法可能抛出的异常。
  • 四、异常的处理方法

方法一:try...catch
要注意的是,如果异常出现,try{}异常语句后面的代码将不会被执行,所以尽量不要放太多代码在try{中}

try{
     执行的代码
     可能出现异常
     一旦出现异常 系统自动为我们创建一个异常对象 并抛出
 }catch(NullPointerException){
     如果需要自己处理异常就catch
 }catch(IOException e){
     如果有多个异常 可以使用多个catch来捕获
     如果有多个异常 catch的顺序是从小到大
 }catch(Exception1 e){

 }finally{
     不管有没有异常finally都会被执行
     处理资源回收 网络连接 数据库连接 I/O流
 }

方法二:throw (异常类型)
一般自己编写代码时,还是抛出具体的异常类型比较好,不过如果异常太多了,也可以直接抛出IOException等大的异常类型,这样代码看起来也比较简洁。

//文件不存在异常、空指针异常
public static void test() throws FileNotFoundException,NullPointerException{
        FileReader fr = new FileReader("");
}

//也可直接用大的异常类型来解决
public static void test() throws IOException{
        FileReader fr = new FileReader("");
}

五、自定义异常类

书写格式如下:

class MyException extends Exception{

    // 1.提供一个无参构造方法
    public PXDException(){
    }

    // 2.提供一个有参构造方法 参数是一个字符串
    public PXDException(String desc){
        super(desc);
    }
}

六、自定义异常类的使用(throw和try...catch的联合使用)

自定义异常类的好处就在于可以时异常提示更为通俗易懂,因为Java本身的异常提示一般是不太容易看得懂的。下面代码的
运行结果为:自己的异常类:无所作为Exception1.java->main->75

public class Exception1 {
    public static void  main(String[] args){
           try {
                TException.test2();
           }catch (MyException e){
                 System.out.println(e.getMessage());
           }
     }
}
class TException {
    public static void test() throws FileNotFoundException,NullPointerException{
        //尝试打开一个不存在的文件
        FileReader fr = new FileReader("");
    }

    public static void test2() throws MyException {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        StackTraceElement e = stackTrace[2];
        //提示错误的代码位置:文件→方法→代码行数
        String detail = e.getFileName()+"->"+e.getMethodName()+"->"+e.getLineNumber();
        throw new MyException("自己的异常类:无所作为"+detail);
    }
}

class MyException extends Exception{

    // 1.提供一个无参构造方法
    public MyException(){
    }

    // 2.提供一个有参构造方法 参数是一个字符串
    public MyException(String desc){
        super(desc);
    }
}

相关文章

  • 【Java学习】泛型的简单使用|异常处理

    心得体会 一开始我也不太理解泛型,后面按老师说的自己尝试去写一个简单的ArrayList方法后,才真正理解了。当然...

  • java泛型、泛型的基本介绍和使用

    现在开始深入学习java的泛型了,以前一直只是在集合中简单的使用泛型,根本就不明白泛型的原理和作用。泛型在java...

  • [转载] java泛型(一)、泛型的基本介绍和使用

    现在开始深入学习java的泛型了,以前一直只是在集合中简单的使用泛型,根本就不明白泛型的原理和作用。泛型在java...

  • 泛型

    2.简单泛型 -********Java泛型的核心概念:告诉编译器想使用什么类型, 然后编译器帮你处理一切细节 2...

  • Java泛型与Kotlin泛型

    Java泛型 学习并掌握泛型类和泛型接口定义和使用 学习并掌握泛型函数的定义和使用 很清晰明了的使用教程 Kotl...

  • Java基础(三)

    Java异常;反射;注解;内部类;泛型;序列化;复制; JAVA 异常分类及处理 概念 如果某个方法不能按照正常的...

  • 泛型

    泛型 一、java中的泛型 泛型是jdk1.5使用的新特性。 泛型的好处: 将运行时的异常提前至了编译时。 避免了...

  • java学习第六天

    异常处理 异常处理机制 java提供的异常类一般是够用了,只有特殊的情况可能需要自己编写异常类 集合 泛型 当我们...

  • JDK1.5后增加了泛型,那么为什么要有泛型呢?我们该如何自定义

    本篇主要讲解java泛型的理解、集合中简单使用泛型、自定义泛型结构(包括类、接口、方法)。 一、什么是泛型? 通俗...

  • Java基础之泛型

    Java基础之泛型 泛型基本介绍 简单介绍在jdk1.6之前,还没有使用到泛型,Java类型分为原始类型、复杂类型...

网友评论

      本文标题:【Java学习】泛型的简单使用|异常处理

      本文链接:https://www.haomeiwen.com/subject/vqnksctx.html