首页 > 编程语言 >Java上的try catch并不影响性能

Java上的try catch并不影响性能

时间:2023-01-11 15:12:06浏览次数:43  
标签:Java 查表 性能 try 地址 catch 异常

 

先说结论,未有异常发生时,二者性能上几乎没有差别。

  • try catch 关键字在编译器级别上的实现原理:

    1、类会跟随一张 异常表(exception table),每一个try catch都会在这个表里添加行记录,每一个记录都有4个信息(try catch的开始地址,结束地址,异常的处理起始位,异常类名称)。

    2、当代码在运行时抛出了异常时,首先拿着抛出位置到异常表中查找是否可以被catch(例如看位置是不是处于任何一栏中的开始和结束位置之间),如果可以则跑到异常处理的起始位置开始处理,如果没有找到则原地return,并且copy异常的引用给父调用方,接着看父调用的异常表。。。以此类推。

  • 可得出如下结论:

    1、异常如果没发生,也就不会去查表,也就是说你写不写try catch 也就是有没有这个异常表的问题,如果没有发生异常,写try catch对性能是木有消耗的,所以不会让程序跑得更慢。

    2、try 的范围大小其实就是异常表中两个值(开始地址和结束地址)的差异而已,也是不会影响性能的。

其实之前在写riscv仿真软件时,硬件的异常处理,也是通过查表完成的!

标签:Java,查表,性能,try,地址,catch,异常
From: https://www.cnblogs.com/cfas/p/17043818.html

相关文章

  • Java面试题Day08
    1.强引用,软引用,弱引用,虚引用的区别?强引用:我们平时new了一个对象就是强引用,例如Objectobj=newObject();即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误......
  • JavaScript超大文件上传
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。这次项目的需求:支持大文件的上传和续传,要求续传支持......
  • 解决 OpenAI‘s API is not available in your country
    解决 OpenAI'sAPIisnotavailableinyourcountry.根据百度翻译,英文大意为:OpenAI的API在您所在的国家/地区不可用。根据显示,需要魔法网络  好了,我们可以看......
  • Jmeter 加载Java代码并执行
    BeanShell中引用外部类,有三种方法:1)引用源文件,即.java文件。2)引用字节码文件,即.class文件。3)引用jar包,即.jar文件。方法1,引用源文件1)创建java文件publicclassTestA{......
  • Java8常见函数式接口总结
    函数式接口函数式接口:有且仅有一个抽象方法的接口。使用@FunctionalInterface注解来标记。如果接口不是函数式接口就会编译出错满足条件的接口即使不加上注解,那也是函......
  • JavaScript – Sort
    前言写程序难免会遇到需要排序的时候.但看是简单的排序,其实暗藏杀机.一不小心就会搞出Bug哦.这篇就简单聊聊JS的排序 ><大过小过排序自然就是先比大小咯.......
  • 强哥说Java--Java集合
    Java集合​​Java集合​​​​前言​​​​目标​​​​1.什么是集合​​​​1.1Collection​​​​1.2Map​​​​2.集合的应用场景​​​​2.1数组与集合​​​​2......
  • 强哥说Java--Java String和StringBuilder
    目录​​JavaString和StringBuilder​​​​前言​​​​1.String对象的创建​​​​2.获取字符串长度​​​​3.字符串查找​​​​3.1获取指定位置字符​​​​3.2......
  • 强哥说Java--网络编程
    网络编程​​网络编程概述​​​​网络通信要素概述​​​​通信要素1:IP和端口号​​​​ip地址​​​​端口号​​​​InetAddress类​​​​实例​​​​通信要素2:网......
  • 强哥说Java--IO流
    IO流​​一、File类的使用​​​​路径分隔符​​​​常用方法​​​​二、IO流原理及流的分类​​​​JavaIO原理​​​​流的分类​​​​节点流和处理流​​​​InputStr......