Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java面试题3:Java异常篇

Java面试题3:Java异常篇

作者头像
程序员洲洲
发布于 2024-06-06 13:49:41
发布于 2024-06-06 13:49:41
16400
代码可运行
举报
文章被收录于专栏:项目文章项目文章
运行总次数:0
代码可运行
  • 1、finally 块中的代码什么时候被执⾏?
  • 答: 在 Java 语⾔的异常处理中,finally 块的作⽤就是为了保证⽆论出现什么情况,finally 块⾥的代码⼀定会被执⾏。 由于程序执⾏ return 就意味着结束对当前函数的调⽤并跳出这个函数体,因此任何语句要执⾏都只能在 return 前 执⾏(除⾮碰到 exit 函数),因此 finally 块⾥的代码也是在 return 之前执⾏的。 此外,如果 try-finally 或者 catch-finally 中都有 return,那么 finally 块中的 return 将会覆盖别处的 return 语 句,最终返回到调⽤者那⾥的是 finally 中 return 的值。 ————————————————————————————————————————————
  • 2、finally 是不是⼀定会被执⾏到?
  • 答: 不⼀定。下⾯列举两种执⾏不到的情况: (1)当程序进⼊ try 块之前就出现异常时,会直接结束,不会执⾏ finally 块中的代码; (2)当程序在 try 块中强制退出时也不会去执⾏ finally 块中的代码,⽐如在 try 块中执⾏ exit ⽅法。 —————————————————————————————————————————————
  • 3、try-catch-finally 中,如果 catch 中 return 了,finally 还会执⾏ 吗?
  • 答: 会。程序在执⾏到 return 时会⾸先将返回值存储在⼀个指定的位置,其次去执⾏ finally 块,最后再返回。因此, 对基本数据类型,在 finally 块中改变 return 的值没有任何影响,直接覆盖掉;⽽对引⽤类型是有影响的,返回的 是在 finally 对 前⾯ return 语句返回对象的修改值。 ——————————————————————————————————————————————
  • 4、try-catch-finally 中那个部分可以省略?
  • 答: catch 可以省略。try 只适合处理运⾏时异常,try+catch 适合处理运⾏时异常+普通异常。也就是说,如果你只⽤ try 去处理普通异常却不加以 catch 处理,编译是通不过的,因为编译器硬性规定,普通异常如果选择捕获,则必 须⽤ catch 显示声明以便进⼀步处理。⽽运⾏时异常在编译时没有如此规定,所以 catch 可以省略,你加上 catch 编译器也觉得⽆可厚⾮。 ————————————————————————————————————————————————
  • 5、Error 和 Exception 的区别?
  • 答: Error 类和 Exception 类的⽗类都是 Throwable 类。主要区别如下: Error 类: ⼀般是指与虚拟机相关的问题,如:系统崩溃、虚拟机错误、内存空间不⾜、⽅法调⽤栈溢出等。这类 错误将会导致应⽤程序中断,仅靠程序本身⽆法恢复和预防; Exception 类:分为运⾏时异常和受检查的异常。 ——————————————————————————————————————————————————
  • 6、运⾏时异常与受检异常有何异同?
  • 答: 运⾏时异常:如:空指针异常、指定的类找不到、数组越界、⽅法传递参数错误、数据类型转换错误。可以编译通 过,但是⼀运⾏就停⽌了,程序不会⾃⼰处理; 受检查异常:要么⽤ try … catch… 捕获,要么⽤ throws 声明抛出,交给⽗类处理。 ——————————————————————————————————————————————————
  • 7、throw 和 throws 的区别?
  • 答: (1)throw:在⽅法体内部,表示抛出异常,由⽅法体内部的语句处理;throw 是具体向外抛出异常的动作,所 以它抛出的是⼀个异常实例; (2)throws:在⽅法声明后⾯,表示如果抛出异常,由该⽅法的调⽤者来进⾏异常的处理;表示出现异常的可能 性,并不⼀定会发⽣这种异常。 ————————————————————————————————————————————————————
  • 8、常⻅的异常类有哪些?
  • 答: NullPointerException:当应⽤程序试图访问空对象时,则抛出该异常。 SQLException:提供关于数据库访问错误或其他错误信息的异常。 IndexOutOfBoundsException:指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。 FileNotFoundException:当试图打开指定路径名表示的⽂件失败时,抛出此异常。 IOException:当发⽣某种 I/O 异常时,抛出此异常。此类是失败或中断的 I/O 操作⽣成的异常的通⽤类。 ClassCastException:当试图将对象强制转换为不是实例的⼦类时,抛出该异常。 IllegalArgumentException:抛出的异常表明向⽅法传递了⼀个不合法或不正确的参数。 ————————————————————————————————————————————————————
  • 9、主线程可以捕获到⼦线程的异常吗?
  • 答: 线程设计的理念:“线程的问题应该线程⾃⼰本身来解决,⽽不要委托到外部”。 正常情况下,如果不做特殊的处理,在主线程中是不能够捕获到⼦线程中的异常的。如果想要在主线程中捕获⼦线 程的异常,我们可以⽤如下的⽅式进⾏处理,使⽤ Thread 的静态⽅法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandle());

——————————————————————————————————————————

  • 10、Java中怎么分异常?
  • 答:
  • 所谓异常是指程序在运行过程中发生的一些不正常事件。(如:除0溢出,数组下标越界,所读取的文件不存在) 异常又可以分为:编译时异常,运行时异常 ————————————————————————————————————————————
  • 11、异常的处理机制有哪几种?
  • 答: 异常捕捉:try…catch…finally,异常抛出:throws。 —————————————————————————————————————————————
  • 12、try catch fifinally,try里有return,finally还执行么?
  • 答: 执行,并且finally的执行早于try里面的return 结论: 1.不管有木有出现异常,finally块中代码都会执行; 2.当try和catch中有return时,finally仍然会执行; 3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的; 4.finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。 —————————————————————————————————————————————————
  • 13、 Excption与Error包结构请解释一下。
  • 答: Java可抛出(Throwable)的结构分为三种类型:被检查的异常(CheckedException),运行时异常 (RuntimeException),错误(Error)。 1.运行时异常 定义:RuntimeException及其子类都被称为运行时异常。 特点:Java编译器不会检查它。也就是说,当程序中可能出现这类异常时,倘若既"没有通过throws声明抛出它",也"没有用try-catch语句捕 获它",还是会编译通过。例如,除数为零时产生的ArithmeticException异常,数组越界时产生的IndexOutOfBoundsException异常,failfast机制产生的ConcurrentModi?cationException异常(java.util包下面的所有的集合类都是快速失败的,“快速失败”也就是fail-fast,它是 Java集合的一种错误检测机制。当多个线程对集合进行结构上的改变的操作时,有可能会产生fail-fast机制。记住是有可能,而不是一定。 例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的 内容),那么这个时候程序就会抛出ConcurrentModi?cationException 异常,从而产生fail-fast机制,这个错叫并发修改异常。Fail-safe,java.util.concurrent包下面的所有的类都是安全失败的,在遍历过程中,如果已经遍历的数组上的内容变化了,迭代器不会抛出 ConcurrentModi?cationException异常。如果未遍历的数组上的内容发生了变化,则有可能反映到迭代过程中。这就是 ConcurrentHashMap迭代器弱一致的表现。ConcurrentHashMap的弱一致性主要是为了提升效率,是一致性与效率之间的一种权衡。要成为强一致性,就得到处使用锁,甚至是全局锁,这就与Hashtable和同步的HashMap一样了。)等,都属于运行时异常。 常见的五种运行时异常: ClassCastException(类转换异常) IndexOutOfBoundsException(数组越界) NullPointerException(空指针异常) ArrayStoreException(数据存储异常,操作数组是类型不一致) Bu?erOver?owException 2.被检查异常 定义:Exception类本身,以及Exception的子类中除了"运行时异常"之外的其它子类都属于被检查异常。特点 : Java编译器会检查它。此类异常,要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,否则不能通过编译。例如,CloneNotSupportedException就属于被 检查异常。当通过clone()接口去克隆一个对象,而该对象对应的类没有实现Cloneable接口,就会抛出CloneNotSupportedException异常。被检查异常通常都是可以恢复的。 如: IOException FileNotFoundException SQLException 被检查的异常适用于那些不是因程序引起的错误情况,比如:读取文件时文件不存在引发的FileNotFoundException 。然而,不被检查的异 常通常都是由于糟糕的编程引起的,比如:在对象引用时没有确保对象非空而引起的 NullPointerException 。 3.错误 定义 : Error类及其子类。 特点 : 和运行时异常一样,编译器也不会对错误进行检查。当资源不足、约束失败、或是其它程序无法继续运行的条件发生时,就产生错误。程序本身无法修复这些错误的。例如,VirtualMachineError就属于错误。出现这种错误会导致程序终止运行。OutOfMemoryError、ThreadDeath。 Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等。 ————————————————————————————————————————————
  • 14、final, finally, finalize的区别。
  • 答: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。 —————————————————————————————————————————————
  • 15、Java中的异常处理机制的简单原理和应用。
  • 答: 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 ——————————————————————————————————————————
  • 16、编程题:
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何重现 DeepSeek 推理性能突破
DeepSeek-V3 在多个评测中展现出强大性能,成为当前最受关注的开源大模型之一。由于采用了大规模 MoE 架构,如何优化推理性能,是工程落地上的关键难点。DeepSeek 团队于 2 月相继开源了 DeepEP、DeepGEMM、FlashMLA、EPLB 等关键组件。在开源社区工作的基础上,我们在 RTP-LLM 上完成了优化工作,对齐了 DeepSeek 推理系统的性能。
深度学习与Python
2025/05/21
580
如何重现 DeepSeek 推理性能突破
Deepseek-V2技术报告解读!全网最细!
深度求索Deepseek近日发布了v2版本的模型,沿袭了1月发布的 Deepseek-MoE(混合专家模型)的技术路线,采用大量的小参数专家进行建模,同时在训练和推理上加入了更多的优化。沿袭了一贯的作风,Deepseek对模型(基座和对话对齐版本)进行了完全的mit协议开源,可以商用。对于算力不是那么充足的开发者,官方提供了API调用的方案,费用更是达到了全场最低!
zenRRan
2025/02/03
1.2K0
Deepseek-V2技术报告解读!全网最细!
PPT汇总:DeepSeek核心技术前世今生
因为本文是小白方式,尽可能讲解思路为主,所以技术上涉及到的公式部分不会细讲哦。公式部分如有时间会单开文章细细讲解。
腾讯云开发者
2025/03/06
5400
PPT汇总:DeepSeek核心技术前世今生
万字长文详解DeepSeek核心技术
在今年的春节期间,DeepSeek 火出了圈。凭借 DeepSeek-V3 与 DeepSeek-R1 的创新技术和卓越表现,DeepSeek 迅速成为了行业内外的焦点。不管是技术专家还是普通用户,都对 DeepSeek 赞不绝口。我们特别准备了这篇技术科普文章,期望无论你是不是技术同学,都能够读懂 DeepSeek。
腾讯云开发者
2025/02/18
1.9K0
万字长文详解DeepSeek核心技术
如何看待 DeepSeek 发布的 MoE 大模型 DeepSeek-V2?(从推理角度分析)
来源丨https://www.zhihu.com/question/655172528/answer/3491439374
BBuf
2025/02/03
2280
如何看待 DeepSeek 发布的 MoE 大模型 DeepSeek-V2?(从推理角度分析)
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
这里提一下,我维护的几个记录个人学习笔记以及社区中其它大佬们的优秀博客链接的仓库都获得了不少star,感谢读者们的认可,我也会继续在开源社区多做贡献。github主页:https://github.com/BBuf ,欢迎来踩
BBuf
2024/06/18
2.8K0
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
DeepSeek一天能赚多少钱?官方突然揭秘V3/R1推理系统,成本全透明
就在所有人以为 DeepSeek 预告的 5 天开源告一段落时,今天中午 12 点 11 分,官方 𝕏 帐号再次更新,宣告「开源周」还在继续。不过这第六天 DeepSeek 并没有开源新的软件库,而是介绍了 DeepSeek-V3/R1 的推理系统。
机器之心
2025/03/03
810
DeepSeek一天能赚多少钱?官方突然揭秘V3/R1推理系统,成本全透明
深度解析为什么Deepseek v3的成本这么低
这个问题其实可以从它发布的技术报告中窥见一二。 DeepSeek V3的训练总共才用了不到280万个GPU小时,而Llama 3 405B却用了3080万GP
算法一只狗
2025/01/05
4.1K0
深度解析为什么Deepseek v3的成本这么低
源2.0-M32大模型发布,MoE全新门控网络Attention Router值得关注
近期,一个新的MoE大模型“源2.0-M32”发布,它创新性地提出和采用了“基于注意力机制的门控网络”技术,构建包含32个专家(Expert)的混合专家模型(MoE),大幅提升了模型算力效率。
公众号-arXiv每日学术速递
2024/05/31
3790
源2.0-M32大模型发布,MoE全新门控网络Attention Router值得关注
AI智能体研发之路-模型篇(二):DeepSeek-V2-Chat 训练与推理实战
5月6日私募基金幻方发布DeepSeek-V2,千亿级模型,每百万Tokens仅需1元-2元。5月15日,字节发布白菜价的豆包大模型,5月21日阿里、百度相机大幅下调甚至免费开放自家商用模型接口,大模型价格战正式打响。而被誉为大模型价格屠夫的“DeepSeek-V2”到底是怎么个事儿,是否可以进行训练和推理,今天我们来展开讲一讲。
LDG_AGI
2024/08/13
1.5K0
AI智能体研发之路-模型篇(二):DeepSeek-V2-Chat 训练与推理实战
马斯克烧60亿美元难题,国内大厂有解?开源MoE模算效率黑马登场,3.7B参数单挑Llama 3-70B
最近马斯克就公开表示,因为苦于买不到足够的芯片,xAI只能推迟Gork 2的训练和发布。
新智元
2024/06/05
1060
马斯克烧60亿美元难题,国内大厂有解?开源MoE模算效率黑马登场,3.7B参数单挑Llama 3-70B
DeepSeek V3把训练大模型的成本给干下来了
一夜之间,DeepSeek突然之间炸场,各个大佬都在纷纷转发,而且发布即开源,直接用50多页的论文公布了其训练细节
算法一只狗
2024/12/29
4.9K0
DeepSeek V3把训练大模型的成本给干下来了
单个4090可推理,2000亿稀疏大模型「天工MoE」开源
在大模型浪潮中,训练和部署最先进的密集 LLM 在计算需求和相关成本上带来了巨大挑战,尤其是在数百亿或数千亿参数的规模上。为了应对这些挑战,稀疏模型,如专家混合模型(MoE),已经变得越来越重要。这些模型通过将计算分配给各种专门的子模型或「专家」,提供了一种经济上更可行的替代方案,有可能以极低的资源需求达到甚至超过密集型模型的性能。
机器之心
2024/06/04
6220
单个4090可推理,2000亿稀疏大模型「天工MoE」开源
万字长文解构DeepSeek V1/V2/V3/R1进化史:从算法革命到推理涌现!
在今年的春节期间,DeepSeek 火出了圈。凭借 DeepSeek-V3 与 DeepSeek-R1 的创新技术和卓越表现,DeepSeek 迅速成为了行业内外的焦点。不管是技术专家还是普通用户,都对 DeepSeek 赞不绝口。我们特别准备了这篇技术科普文章,期望无论你是不是技术同学,都能够读懂 DeepSeek。
腾讯云开发者
2025/02/27
7960
万字长文解构DeepSeek V1/V2/V3/R1进化史:从算法革命到推理涌现!
MoE 高效训练的 A/B 面:与魔鬼做交易,用「显存」换「性能」
MoE(Mixture of Experts),又称「混合专家」,本质是一种模块化的稀疏激活。怎么理解?
AI科技评论
2024/06/03
9430
MoE 高效训练的 A/B 面:与魔鬼做交易,用「显存」换「性能」
[DeepSeek]-DeepSeek技术解析:MoE架构实现与代码实战
以下是一篇结合DeepSeek技术解析与代码示例的技术文章,重点展示其核心算法实现与落地应用:
远方2.0
2025/03/15
4310
[DeepSeek]-DeepSeek技术解析:MoE架构实现与代码实战
深度求索开源国内首个 MoE 大模型 | DeepSeekMoE:在专家混合语言模型中实现终极专家专业化
在大语言模型时代,混合专家模型(MoE)是一种很有前途的架构,用于在扩展模型参数时管理计算成本。然而,传统的 MoE 架构(如 GShard)会激活 N 位专家中的 top-K 专家,但在确保专家专业化(即每位专家获取的知识不重叠且重点突出)方面面临挑战。作为回应,研究者提出了 DeepSeekMoE 架构,以实现终极的专家专业化。它涉及两个主要战略:
叶庭云
2024/05/25
1.9K0
深度求索开源国内首个 MoE 大模型 | DeepSeekMoE:在专家混合语言模型中实现终极专家专业化
DeepSeek开源周Day1:重磅发布FlashMLA,重新定义AI推理效率天花板
DeepSeek开源周Day1:重磅发布FlashMLA,重新定义AI推理效率天花板
没事学点编程小知识
2025/02/24
1380
[DeepSeek]解析DeepSeek的技术内核:混合专家架构如何重塑AI效能
在当今大型语言模型(LLM)竞争激烈的赛道上,中国AI企业DeepSeek凭借其独特的技术路线脱颖而出。其核心优势之一,便是对混合专家(Mixture of Experts,简称MoE)架构的创新应用,这一技术选择不仅重塑了AI模型的效能表现,更为行业带来了全新的思考方向。本文将深入解析DeepSeek如何通过MoE架构实现算力与性能的最优平衡。
远方2.0
2025/03/27
1650
[DeepSeek]解析DeepSeek的技术内核:混合专家架构如何重塑AI效能
深度解析DeepSeek核心机制:从模型架构到应用场景
随着大规模语言模型(LLM)的崛起,DeepSeek作为一款具备卓越性能的AI模型,在代码生成、文本理解、对话交互等多个领域展现了强大能力。本文将深入解析DeepSeek的核心机制,包括其模型架构、训练策略、推理优化及其在实际应用中的表现,并通过代码示例展示其强大之处。
江南清风起
2025/03/14
4680
深度解析DeepSeek核心机制:从模型架构到应用场景
推荐阅读
如何重现 DeepSeek 推理性能突破
580
Deepseek-V2技术报告解读!全网最细!
1.2K0
PPT汇总:DeepSeek核心技术前世今生
5400
万字长文详解DeepSeek核心技术
1.9K0
如何看待 DeepSeek 发布的 MoE 大模型 DeepSeek-V2?(从推理角度分析)
2280
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
2.8K0
DeepSeek一天能赚多少钱?官方突然揭秘V3/R1推理系统,成本全透明
810
深度解析为什么Deepseek v3的成本这么低
4.1K0
源2.0-M32大模型发布,MoE全新门控网络Attention Router值得关注
3790
AI智能体研发之路-模型篇(二):DeepSeek-V2-Chat 训练与推理实战
1.5K0
马斯克烧60亿美元难题,国内大厂有解?开源MoE模算效率黑马登场,3.7B参数单挑Llama 3-70B
1060
DeepSeek V3把训练大模型的成本给干下来了
4.9K0
单个4090可推理,2000亿稀疏大模型「天工MoE」开源
6220
万字长文解构DeepSeek V1/V2/V3/R1进化史:从算法革命到推理涌现!
7960
MoE 高效训练的 A/B 面:与魔鬼做交易,用「显存」换「性能」
9430
[DeepSeek]-DeepSeek技术解析:MoE架构实现与代码实战
4310
深度求索开源国内首个 MoE 大模型 | DeepSeekMoE:在专家混合语言模型中实现终极专家专业化
1.9K0
DeepSeek开源周Day1:重磅发布FlashMLA,重新定义AI推理效率天花板
1380
[DeepSeek]解析DeepSeek的技术内核:混合专家架构如何重塑AI效能
1650
深度解析DeepSeek核心机制:从模型架构到应用场景
4680
相关推荐
如何重现 DeepSeek 推理性能突破
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验