「8」进大厂必须掌握的面试题-Java面试-异常和线程
Q1 。 错误和异常有什么区别?错误是在运行时发生的不可恢复的情况 。 如OutOfMemory错误 。 这些JVM错误无法在运行时修复 。 尽管可以在catch块中捕获错误 , 但是应用程序的执行将停止并且无法恢复 。
而异常是由于输入错误或人为错误等原因而发生的情况 。 例如 , 如果指定的文件不存在 , 则将抛出FileNotFoundException 。 否则 , 如果尝试使用null引用 , 则会发生NullPointerException 。 在大多数情况下 , 有可能从异常中恢复(可能是通过向用户提供输入正确值的反馈等) 。
Q2 。 您如何处理Java异常?Java中有五个关键字用于处理异常:
- try
- catch
- finally
- throw
- throws
- 扩展Throwable类的类(RuntimeException和Error除外)被称为检查异常 。
- 被检查的异常在编译时被检查 。
- 示例:IOException , SQLException等 。
- 扩展RuntimeException的类称为未检查的异常 。
- 未检查的异常不会在编译时检查 。
- 例如:ArithmeticException , NullPointerException等 。
class FinalVarExample {public static void main( String args[]){final int a=10;// Final variablea=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");}}}
finalizeFinalize用于在垃圾回收之前就执行清理处理 。 让我们看下面的示例 , 以更好地理解它 。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有什么区别?throw throws 引发用于显式引发异常 。引发用于声明异常 。已检查的异常不能仅通过throw传播 。可以使用throws传播检查的异常 。引发后跟一个实例 。投掷之后是上课 。在方法中使用了throw 。抛出与方法签名一起使用 。您不能抛出多个异常 您可以声明多个异常 , 例如public void method()引发IOException , SQLException 。Q6 。 什么是Java中的异常层次结构?【「8」进大厂必须掌握的面试题-Java面试-异常和线程】层次结构如下:
Throwable是所有Exception类的父类 。 异常有两种类型:检查的异常和UncheckedExceptions或RunTimeExceptions 。 两种类型的异常都扩展了Exception类 , 而错误又进一步分为虚拟机错误和断言错误 。
Q7 。 如何创建自定义异常?要创建您自己的异常 , 请扩展Exception类或其任何子类 。
- class New1Exception extends Exception {} //这将创建Checked Exception
- 类NewException扩展了IOException {} //这将创建Checked异常
- 类NewException扩展了NullPonterExcpetion {} //这将创建UnChecked异常
- String getMessage() –此方法返回Throwable消息字符串 , 并且可以在通过其构造函数创建异常时提供该消息 。
- String getLocalizedMessage()–提供此方法 , 以便子类可以重写它以向调用程序提供特定于语言环境的消息 。 此方法的可抛出类实现仅使用getMessage()方法即可返回异常消息 。
- Synchronized Throwable getCause() –此方法返回异常原因 , 或者返回null id , 原因未知 。
- String toString() –此方法以String格式返回有关Throwable的信息 , 返回的String包含Throwable类的名称和本地化消息 。
- void printStackTrace() –此方法将堆栈跟踪信息打印到标准错误流 , 此方法已重载 , 我们可以传递PrintStream或PrintWriter作为参数 , 以将堆栈跟踪信息写入文件或流 。
- 国外|坐拥77件专利,打破国外的垄断,造出中国最先进的家电芯片
- 体验|闭上眼睛点外卖是什么感觉?时隔一年再次体验,进步令人欣慰
- 抖音小店|抖音进军电商,短视频的商业模式与变现,创业者该如何抓住机遇?
- 权属|从数据悖论到权属确认,数据共享进路所在
- 省科技进步统计报告出炉,西湖区创新指数跻身全省前三
- 钢筋|海南国道G360文临公路项目引进钢筋智能“焊”将
- 率先|还在相片美颜?OPPO已进军视频美妆领域,周冬雨或率先体验
- 花15.5亿元与中粮包装握手言和 加多宝离上市又进一步?|15楼财经 | 清远加多宝
- 器件|苏州纳米所等在高性能柔性储能器件研究中取得进展
- 联手|政企联动、市区联手,共享计划促进大中小企业融通发展