首页 > 其他分享 >异常(exception、try-catch)、泛型

异常(exception、try-catch)、泛型

时间:2023-09-17 22:58:38浏览次数:47  
标签:exception 虚拟机 try 泛型 finally catch public

1.Exception 和 Error 有什么区别?

在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类:

  • Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。Exception 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。
  • ErrorError 属于程序无法处理的错误 ,不建议通过catch捕获 。例如 Java 虚拟机运行错误(Virtual MachineError)、虚拟机内存不够错误(OutOfMemoryError)、类定义错误(NoClassDefFoundError)等 。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。

finally 中的代码一定会执行吗?

不一定!在某些情况下,finally 中的代码不会被执行。

  (1) finally 之前虚拟机被终止运行

  (2) 程序所在的线程死亡

  (3) 关闭 CPU

比如在catch里写了 //终止当前正在运行的Java虚拟机
System.exit(1)

 

3.如何使用 try-with-resources 代替try-catch-finally

  适用范围(资源的定义): 任何实现 java.lang.AutoCloseable或者 java.io.Closeable 的对象

  关闭资源和 finally 块的执行顺序:try-with-resources 语句中,任何 catch 或 finally 块在声明的资源关闭后运行

try (Scanner scanner = new Scanner(new File("test.txt"))) {
    while (scanner.hasNext()) {
        System.out.println(scanner.nextLine());
    }
} catch (FileNotFoundException fnfe) {
    fnfe.printStackTrace();
}

 

4.泛型   泛型一般有三种使用方式:泛型类泛型接口泛型方法
//在实例化泛型类时,必须指定T的具体类型
public class Generic<T>{
    private T key;
    public Generic(T key) {
        this.key = key;
    }
    public T getKey(){
        return key;
    }
}


public interface Generator<T> {
    public T method();
}


public static <E> void printArray( E[] inputArray )
{
    for ( E element : inputArray ){
         System.out.printf( "%s ", element );
    }
    System.out.println();
 }

 

项目中哪里用到了泛型?

  • 自定义接口通用返回结果 CommonResult<T> 通过参数 T 可根据具体的返回类型动态指定结果的数据类型
  • 定义 Excel 处理类 ExcelUtil<T> 用于动态指定 Excel 导出的数据类型
  • 构建集合工具类(参考 Collections 中的 sort, binarySearch 方法)。

 

标签:exception,虚拟机,try,泛型,finally,catch,public
From: https://www.cnblogs.com/cjhtxdy/p/17710003.html

相关文章

  • java.lang.ExceptionInInitializerError
    首先,这是匿名内部类初始化的时候报的错,然后这个报错只能代表初始化失败了,具有一定迷惑性,具体什么原因导致的,还得进一步分析建议:1、首先检查配置文件,有可能对应环境的配置文件没有配置(我就是)2、如果配置文件没问题,那就只能每一步都加下日志......
  • Guava Retry
    定义:一个重试机制的框架。使用方式:添加依赖<dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version></dependency>创建重试器,执行重试方法......
  • java基础-异常Exception-day10
    目录1.练习2.异常三联try-catch-finally3.异常的分类3.子类throws的异常小于等于父类的异常4.自定义异常1.练习packagecom.msb01;importjava.util.Scanner;/***@Auther:jack.chen*@Date:2023/9/17-09-17-10:58*@Description:com.msb01*@versi......
  • C++的异常类型与多级catch匹配
    try-catch的用法:try{//可能抛出异常的语句}catch(exceptionTypevariable){//处理异常的语句}我们还遗留下一个问题,就是catch关键字后边的exceptionTypevariable,这节就来详细分析一下。exceptionType是异常类型,它指明了当前的catch可以处理什么类型的异常;varia......
  • Tkinter 组件详解之Entry
    importtkinterastkmaster=tk.Tk()tk.Label(master,text="作品:").grid(row=0)tk.Label(master,text="作者:").grid(row=1)e1=tk.Entry(master)e2=tk.Entry(master)e1.grid(row=0,column=1,padx=10,pady=5)e2.grid(row=1,column=1......
  • 解决错误 org.apache.ibatis.type.TypeException: The alias xxx is already mapped t
    具体错误信息如下:其实就是此类名和其他包有冲突那么解决办法就是声明一个别名就好了:使用注解解決办法......
  • How to fix java.net.SocketException: Too many files open in tomcat
    NotmanyJavaprogrammersknowsthatsocketconnectionsaretreatedlikefilesandtheyusefiledescriptor,whichisalimitedresource.Differentoperatingsystemhasdifferentlimitsonnumberoffilehandlestheycanmanage.Oneof......
  • (转)HashMap出现 java.util.ConcurrentModificationException
    Iterator<Integer>keys=gradeMap.keySet().iterator();while(keys.hasNext()){Integeri=keys.next();if(!gradesIds.contains(i)){//keys.remove();gradeMap.remove(i);}......
  • tomcat报错:java.io.IOException: 您的主机中的软件中止了一个已建立的连接。页面响应
    tomcat报错:java.io.IOException:您的主机中的软件中止了一个已建立的连接。tomcat报错:org.apache.catalina.connector.ClientAbortException:java.io.IOException:您的主机中的软件中止了一个已建立的连接。 出现原因:1、由于客户端在发送请求后,还没等服务器响应就断开了......
  • Java安全架构____RSA加密配置第三方加密库问题_javax.crypto.BadPaddingException: De
    刚要写一个JCE组件是未使用第三方加密库时bug如下javax.crypto.BadPaddingException:Decryptionerroratsun.security.rsa.RSAPadding.unpadV15(UnknownSource)atsun.security.rsa.RSAPadding.unpad(UnknownSource)atcom.sun.crypto.provider.RSACipher.doFinal(RSACipher.j......