此异常最初是在此调用堆栈中引发的:_【8】进大厂必须掌握的面试题Java面试异常和线程...

点击上方“全栈程序员社区”,星标公众号

重磅干货,第一时间送达

Q1。错误和异常有什么区别?

错误是在运行时发生的不可恢复的情况。如OutOfMemory错误。这些JVM错误无法在运行时修复。尽管可以在catch块中捕获错误,但是应用程序的执行将停止并且无法恢复。

而异常是由于输入错误或人为错误等原因而发生的情况。例如,如果指定的文件不存在,则将抛出FileNotFoundException。否则,如果尝试使用null引用,则会发生NullPointerException。在大多数情况下,有可能从异常中恢复(可能是通过向用户提供输入正确值的反馈等)。

Q2。您如何处理Java异常?

Java中有五个关键字用于处理异常:

  1. try

  2. catch

  3. finally

  4. throw

  5. throws

Q3。Checked Exception和Unchecked Exception有什么区别?

检查异常

  • 扩展Throwable类的类(RuntimeException和Error除外)被称为检查异常。

  • 被检查的异常在编译时被检查。

  • 示例:IOException,SQLException等。

未经检查的异常

  • 扩展RuntimeException的类称为未检查的异常。

  • 未检查的异常不会在编译时检查。

  • 例如:ArithmeticException,NullPointerException等。

Q4。关键字final,finally和finalize有什么目的?

final:**

Final用于对类,方法和变量施加限制。不能继承final类,不能覆盖final方法,并且不能更改final变量值。让我们看下面的示例,以更好地理解它。

class FinalVarExample {
public static void main( String args[]){
final int a=10; // Final variable
a=50; //Error as value can't be changed
}
}

finally

最后用于放置重要代码,无论是否处理异常,都将执行该代码。让我们看下面的示例,以更好地理解它。

class FinallyExample {
public static void main(String args[]){
try {
int x=100;
}catch(Exception e) {
System.out.println(e);
}finally {
System.out.println("finally block is executing");
}
}
}

finalize

Finalize用于在垃圾回收之前就执行清理处理。让我们看下面的示例,以更好地理解它。

class FinalizeExample {
public void finalize() {
System.out.println("Finalize is called");
}
public static void main(String args[]){
FinalizeExample f1=new FinalizeExample();
FinalizeExample f2=new FinalizeExample();
f1= NULL;
f2=NULL;
System.gc();
}
}

Q5。throw和throws有什么区别?

throwthrows
引发用于显式引发异常。引发用于声明异常。
已检查的异常不能仅通过throw传播。可以使用throws传播检查的异常。
引发后跟一个实例。投掷之后是上课。
在方法中使用了throw。抛出与方法签名一起使用。
您不能抛出多个异常您可以声明多个异常,例如public void method()引发IOException,SQLException。

Q6。什么是Java中的异常层次结构?

层次结构如下:

Throwable是所有Exception类的父类。异常有两种类型:检查的异常和UncheckedExceptions或RunTimeExceptions。两种类型的异常都扩展了Exception类,而错误又进一步分为虚拟机错误和断言错误。

Q7。如何创建自定义异常?

要创建您自己的异常,请扩展Exception类或其任何子类。

  • class New1Exception extends Exception {} //这将创建Checked Exception

  • 类NewException扩展了IOException {} //这将创建Checked异常

  • 类NewException扩展了NullPonterExcpetion {} //这将创建UnChecked异常

Q8。Java异常类的重要方法有哪些?

异常及其所有子类均未提供任何特定方法,并且所有方法均在基类Throwable中定义。

  1. String getMessage() –此方法返回Throwable消息字符串,并且可以在通过其构造函数创建异常时提供该消息。

  2. String getLocalizedMessage()–提供此方法,以便子类可以重写它以向调用程序提供特定于语言环境的消息。此方法的可抛出类实现仅使用getMessage()方法即可返回异常消息。

  3. Synchronized Throwable getCause() –此方法返回异常原因,或者返回null id,原因未知。

  4. String toString() –此方法以String格式返回有关Throwable的信息,返回的String包含Throwable类的名称和本地化消息。

  5. void printStackTrace() –此方法将堆栈跟踪信息打印到标准错误流,此方法已重载,我们可以传递PrintStream或PrintWriter作为参数,以将堆栈跟踪信息写入文件或流。

Q9。进程和线程之间有什么区别?

ProcessThread
定义程序的执行实例称为进程。线程是进程的子集。
通讯进程必须使用进程间通信与同级进程进行通信。线程可以直接与其进程中的其他线程通信。
控制进程只能控制子进程。线程可以对同一进程的线程行使相当大的控制权。
变化父进程中的任何更改都不会影响子进程。主线程中的任何更改都可能影响该进程其他线程的行为。
记忆在单独的内存空间中运行。在共享内存空间中运行。
受控制于进程由操作系统控制。线程由程序中的程序员控制。
依存关系流程是独立的。线程是依赖的。

Q10。什么是finally块?有没有什么情况下最终将不会执行?

最终块是始终执行一组语句的块。它始终与try块相关联,无论是否发生任何异常。是的,如果程序通过调用System.exit()或导致致命错误(导致进程中止)退出,则最终将不会执行。

Q11。什么是同步?

同步是指多线程。同步的代码块一次只能由一个线程执行。由于Java支持执行多个线程,因此两个或多个线程可以访问相同的字段或对象。同步是使所有并发线程在执行中保持同步的过程。同步避免了由于共享内存视图不一致而导致的内存一致性错误。当一个方法被声明为已同步时,线程将保持该方法对象的监视器。如果另一个线程正在执行同步方法,则该线程将被阻塞,直到该线程释放监视器。

efba066d6e97cc3f0ed4cbd0ba044375.png

Q12。我们可以在单个try块下写入多个catch块吗?

是的,我们可以在单个try块下包含多个catch块,但是方法应从特定到一般。让我们通过一个编程示例来理解这一点。

public class Example {
public static void main(String args[]) {
try {
int a[] = new int[10];
a[10] = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Arithmetic exception in first catch block");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array index out of bounds in second catch block");
} catch (Exception e) {
System.out.println("Any exception in third catch block");
}
}
}

Q13。Java异常类的重要方法有哪些?

方法在基类Throwable中定义。Java异常类的一些重要方法如下所述。

  1. String getMessage() –此方法返回有关异常的消息String。可以通过其构造函数提供消息。

  2. public StackTraceElement [] getStackTrace()–此方法返回一个数组,其中包含堆栈跟踪中的每个元素。索引0处的元素表示调用堆栈的顶部,而数组中的最后一个元素表示调用堆栈底部的方法。

  3. 同步的Throwable getCause() –此方法返回Throwable对象表示的异常原因或null ID。

  4. String toString() –此方法以String格式返回信息。返回的字符串包含Throwable类的名称和本地化消息。

  5. void printStackTrace() –此方法将堆栈跟踪信息打印到标准错误流。

Q14。什么是Java中的OutOfMemoryError?

OutOfMemoryError是java.lang.Error的子类,通常在我们的JVM内存不足时发生。

Q15。什么是线程?

线程是可以由调度程序独立执行的最小编程指令。在Java中,所有程序都将至少具有一个线程,该线程称为主线程。当程序开始执行时,此主线程由JVM创建。主线程用于调用程序的main()。

Q16。创建线程的两种方法是什么?

在Java中,可以通过以下两种方式创建线程:

  • 通过实现Runnable接口。

  • 通过扩展线程

Q17。Java中有哪些不同类型的垃圾收集器?

Java中的垃圾收集程序,可以帮助进行隐式内存管理。由于在Java中,可以使用new关键字动态创建对象,一旦创建对象,该对象将消耗一些内存。一旦工作完成,并且不再有对象的引用,使用垃圾回收的Java将破坏该对象并释放其占用的内存。Java提供了四种类型的垃圾收集器:

  • 串行垃圾收集器

  • 并行垃圾收集器

  • CMS垃圾收集器

  • G1垃圾收集器

往期推荐

【7】进大厂必须掌握的面试题-Java面试-Jsp

【6】进大厂必须掌握的面试题-Hibernate

【5】进大厂必须掌握的面试题-Java面试-spring

【4】进大厂必须掌握的面试题-Java面试-jdbc

e4c451b773e8a30e2edd077c4ad226bf.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高仿带感魔性病毒源码+成品(最近很火的)

高仿带感魔性病毒源码成品(最近很火的)娱乐使用。没破坏性 会改壁纸和打乱桌面图标顺序 自己改回来就好 演示地址: 下载地址:链接: http://pan.baidu.com/s/1dF2ZlU5 密码: m95p转载于:https://www.cnblogs.com/blogwy/p/5804711.…

数据库设计:数据库设计的基本步骤介绍

数据库设计主要包括用户需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施阶段、数据库运行和维护阶段等六个阶段。1、用户需求分析 数据库设计人员采用相应的辅助工具对应用对象的功能、性能、限制等要求进行科学实际的分析。2、概念结构设计 概念结构设计主要…

坎蒂雷赋权法 matlab,干货 | 利用MATLAB实现FMCW雷达中的常用角度估计方法

其中在介绍角度估计中,通过对接收差频信号在快慢时间维度的扩展,增加了空域的信息。扩展后的接收差频信号可以表示为其中k表示接收天线的个数,d为天线间距。在“干货|利用MATLAB实现FMCW雷达的角度估计”中,已经介绍了如何理解目标…

vscode 使用笔记

https://code.visualstudio.com/docs/setup/setup-overview#_proxy-server-support 如果使用代理上网时,需要配置: 在 settings.json 中这样设定: // 将设置放入此文件中以覆盖默认设置{"http.proxy": "http://用户名:密码IP:…

数据库设计基础:需求分析相关知识笔记

系统需求分析是用户和相关设计人员对数据库应用系统所涉及的内容和功能描述,主要是以用户角度来了解系统,是数据库逻辑设计和物理设计以及应用程序的涉及都根据系统分析的内容作为基础。该阶段是非常重要的环节,如果该阶段设计的不好&#xf…

matlab 康托尔集,康托尔集的性质特点

康托尔集的性质特点康托三分集中有无穷多个点,所有的点处于非均匀分布状态。此点集具有自相似性,其局部与整体是相似的,所以是一个分形系统。康托三分集具有(1)自相似性;(2)精细结构;(3)无穷操作或迭代过程&#xff1b…

String、StringBuuffer、StringBuilder三者的区别

可变性 String 类中使用 final 关键字字符数组保存字符串, private final char value[] ,所以 String 对象是不可变的。 StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存…

运算符和类型转换

1.类型转换: 分为自动转换和强制转换,一般用强制转换。 其他类型转换为整数:parseInt(); 其他类型转换为小数:parseFloat(); 判断是否是一个合法的数字类型&a…

数据库设计基础:数据字典相关知识笔记

1、数据字典的定义 数据字典(Data Dictionary ,DD)是各类数据描述的集合,它是关于数据库中数据的描述,即元数据,而不是数据本身。2、数据字典的组成数据字典主要包括数据项、数据结构、数据流、数据存储、处理过程等内…

用符号方法求下列极限或导数matlab,matlab实验

3,设有矩阵A 和B 1234530166789101769A ,111213141502341617181920970212223242541311B ????????-????????-????????????????1、求它们的乘积C ;2、将矩阵C 的右下角3*2子矩阵赋给D ;3、察看matlab 工作空间…

事务管理:事务的基本概念笔记

1、事务的意义事务管理是对于一系列数据库操作进行操作。针对多个事务并发执行的数据库当中,如果对共享的数据进行更新操作不进行控制,很有可能会产生数据的不一致性,造成数据库存储无效甚至错误的数据。数据库在运行过程中会受到很多方面的因…

从零开始攻略PHP(8)——面向对象(下)

8.编写代码类 每个分离的函数可以执行一个明确的任务。任务越简单,编写与测试这个函数就越简单,当然也不要将这个函数分得太小——若将程序分成太多的小个体,读起来就会很困难。 使用继承可以重载操作。我们可以替换成一个大的Display()函数&…

vb treeview 展开子节点_C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形

本文介绍通过C#和http://VB.NET程序代码来创建和编辑PPT文档中的SmartArt图形。文中将分两个操作示例来演示创建和编辑结果。使用工具:Spire.Presentation for .NET hotfix 5.9.5dll文件引用:方式1:下载包;Spire.Presentation for…

mysql安装教程8.0.21安装,Windows系统下MySQL8.0.21安装教程(图文详解)

安装建议:尽量不要用.exe进行安装,用压缩包安装,对日后的卸载/版本升级更为方便下载地址:https://dev.mysql.com/downloads/mysql/1、点击上面的下载地址得到zip压缩包2、解压到要安装的目录我这里是E:\database\mysql8\mysql-8.0…

Java中 a+=b和a=a+b有什么区别?

一:性能方面 aab是加法运算 需要两次寻找地址而ab是增量运算有寄存器优先时 只有一次地址查找。效率方面后者略高于前者 基于现在计算机的发展可忽略不计。 二:对于不同类型的a,b来说 1:不同类型的两个变量在进行运算的时候,我们经常说到的…

事务管理:事务的状态相关知识笔记

1、事务的几个概念中止事务:事务在执行过程中发生故障,不能执行完成的事务。可以进行事务回滚,保持数据库的一致性。事务回滚:将中止事务对数据库的更新操作撤销称为事务回滚。已提交事务:成功执行完成的事务称为已提交…

mysql符合安可要求吗,安可是什么意思?演唱太过精彩,粉丝要求返场(再唱一个)...

解答:安可是指再唱一个的意思,最早是源自英语“Encore”,常被用在演唱会上,当最后一轮表演或演唱结束之后,粉丝就会开始大喊“安可”,就是想要再听一场,这时歌手也会应粉丝的要求返场。安可是什…

事务管理基础:数据库的并发控制相关知识笔记

1、并发操作的概念介绍并发操作主要是指在多用户共享的系统当中,可能存在很多用户同时对同一个数据进行操作。并发操作会造成丢失更新、不可重复读、读脏数据。主要原因是事务的并发操作破坏了事务的隔离性。2、事务调度相关知识事务调度主要有串行调度、并发调度、…

Spring的AOP理解

Spring的AOP理解: OOP面向对象,允许开发者定义纵向的关系,但并适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用。 AOP,一般称为面向切面,作为面向对象的一种补充&#xff…

wpf 如何设置弹出窗口必须关闭才能打开其他软件_5招教你如何清除C盘除系统外的所有垃圾!都学会了吗?...

老毛桃winpe 2019-04-24 12:22:54 对于C盘,最让我们头疼的问题就是空间不足了!虽然知道C盘会存有很多垃圾,但由于C盘也是系统盘,我们只能可望不可及。那么,有什么办法清除C盘除系统外的所有垃圾吗?答案是…