JAVA异常架构图及面试题、及其断言

一、异常


红色为检查异常,就是eclipse要提示你是try catch 还是throws。

非检查异常,就是I0,nullpointexception,数据越界访问indexOfOutBounds 异常

错误: 最常见的oom错误,还有classnotFoundeError,StackOverflowError:

java异常处理面试题归纳

1、error和exception有什么区别

error表示系统级的错误,是java运行环境内部错误或者硬件问题,不能指望程序来处理这样的问题,除了退出运行外别无选择,它是Java虚拟机抛出的。

exception 表示程序需要捕捉、需要处理的异常,是由与程序设计的不完善而出现的问题,程序必须处理的问题

2、运行时异常和一般异常有何不同

Java提供了两类主要的异常:runtimeException和checkedException

一般异常(checkedException)主要是指IO异常、SQL异常等。对于这种异常,JVM要求我们必须对其进行cathc处理,所以,面对这种异常,不管我们是否愿意,都是要写一大堆的catch块去处理可能出现的异常。

运行时异常(runtimeException)我们一般不处理,当出现这类异常的时候程序会由虚拟机接管。比如,我们从来没有去处理过NullPointerException,而且这个异常还是最常见的异常之一。

出现运行时异常的时候,程序会将异常一直向上抛,一直抛到遇到处理代码,如果没有catch块进行处理,到了最上层,如果是多线程就有Thread.run()抛出,如果不是多线程那么就由main.run()抛出。抛出之后,如果是线程,那么该线程也就终止了,如果是主程序,那么该程序也就终止了。

其实运行时异常的也是继承自Exception,也可以用catch块对其处理,只是我们一般不处理罢了,也就是说,如果不对运行时异常进行catch处理,那么结果不是线程退出就是主程序终止。如果不想终止,那么我们就必须捕获所有可能出现的运行时异常。如果程序中出现了异常数据,但是它不影响下面的程序执行,那么我们就该在catch块里面将异常数据舍弃,然后记录日志。如果,它影响到了下面的程序运行,那么还是程序退出比较好些。

3、Java中异常处理机制的原理

Java通过面向对象的方式对异常进行处理,Java把异常按照不同的类型进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它都是Throwable或其子类的实例。当一个方法出现异常后就会抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并对异常进行处理。Java的异常处理是通过5个关键词来实现的:try catch throw throws finally。

一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws),我们可以通过它的类型来捕捉它,或最后由缺省处理器来处理它(finally)。

try:用来指定一块预防所有异常的程序

catch:紧跟在try后面,用来捕获异常

throw:用来明确的抛出一个异常

throws:用来标明一个成员函数可能抛出的各种异常

finally:确保一段代码无论发生什么异常都会被执行的一段代码。

4、你平时在项目中是怎样对异常进行处理的。

(1)尽量避免出现runtimeException 。例如对于可能出现空指针的代码,带使用对象之前一定要判断一下该对象是否为空,必要的时候对runtimeException

也进行try catch处理。

(2)进行try catch处理的时候要在catch代码块中对异常信息进行记录,通过调用异常类的相关方法获取到异常的相关信息,返回到web端,不仅要给用户良好的用户体验,也要能帮助程序员良好的定位异常出现的位置及原因。例如,以前做的一个项目,程序遇到异常页面会显示一个图片告诉用户哪些操作导致程序出现了什么异常,同时图片上有一个按钮用来点击展示异常的详细信息给程序员看的。

5、final、finally、finalize的区别

(1)、final用于声明变量、方法和类的,分别表示变量值不可变,方法不可覆盖,类不可以继承

(2)、finally是异常处理中的一个关键字,表示finally{}里面的代码一定要执行

(3)、finalize是Object类的一个方法,在垃圾回收的时候会调用被回收对象的此方法。

6、try()里面有一个return语句,那么后面的finally{}里面的code会不会被执行,什么时候执行,是在return前还是return后?

自己写了个代码测试了一下:

显示输出结果为1,记住就行了,不想去钻这个问题的牛角尖,也没有什么大用处。


二、断言

J2SE 1.4在语言上提供了一个新特性,就是assertion(断言)功能,它是该版本在Java语言方面最大的革新。在软件开发中,assertion是一种经典的调试、测试方式,本文将深入解析assertion功能的使用以及其设计理念,并给出相关的例子 。


assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eiffel等,但是支持的形式不尽相同,有的是通过语言本身、有的是通过库函数等。另外,从理论上来说,通过assertion方式可以证明程序的正确性,但是这是一项相当复杂的工作,目前还没有太多的实践意义。


在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为 true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。下面简单介绍一下Java中 assertion的实现。


下面是一个使用assert的例子:

public class TestAssert{
     public static void main(String[] args){
         String chai";
         //String assert(name!=null):"变量name为空null";
         System.out.println(name);
     }
}
上面程序中,当变量name为null时,将会抛出一个AssertionError,并输出错误信息。
要想让上面的程序中的断言有效并且正确编译,在编译程序时,必须使用-source 1.4选项。如:

javac -source 1.4 TestAssert.Java

在Eclipse(3.0M9)开发环境中,必须在window->preferences 中,左边选中"Java->Compiler",右边选择
“Compliance and ClassFiles”页面下的将"Compiler Compliance Level"选择为1.4;同时,将
"Use Default Compiler Settings"前的勾去掉。并将下面的
"Generated .class file compatibility"和"Sourcecompatibility"均选择为1.4,才能正确编译。

同时,要想让断言起效用,即让断言语句在运行时确实检查,在运行含有assert的程序时,必须指定-ea选项
如:为了能够让上面的程序运行,我们执行下面代码:

java -ea TestAssert

在在Eclipse(3.0M9)开发环境中,运行时,我们必须配置运行时的选项"Run",在Arguments页面中的
"VM Arguments" 中填入-ea选项。才能让断言在运行时起作用。




本文来自:

http://www.cnblogs.com/gaoweixiao99/p/4905860.html

http://blog.youkuaiyun.com/AbnerChai/article/details/87379

【Telephony】APN配置及加载流程&项目实践(AOSP) 学习APN关键是学会明白apns-conf.xml文件各个参数的意思,然后熟悉TelephonyProvider是如何读取文件创建数据库的,譬如数据库表的约束、文件的读写顺序等,还有读取后的ApnSetting的二次定制以及显示(例如屏蔽xcap等)。虽然一般在项目中APN的需求很简单,就是按照客户提供的APN参数添加上配置,或者在显示屏蔽一些参数,但是项目维护的过程中APN的问题也是比较多的。 阅读详情

相关推荐

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南

本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。

weixin_30236595的博客 582

Day31.异常机制 -Java异常

异常机制 什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。完美的程序再跑着,内存或者硬盘可能满了。等等… 软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理。而不至于程序崩溃。 异常指程序运行中出现的不期而至的各种状况,如:文件找不到

阿昌爱Java 617

宜搭子表单(自定义页面全部展示)

效果:增加自定义页面添加表格组件,配置数据源变量: formUuid'表单编码'变量: pageSize10变量: currentPage1。

2301_80286061的博客 2284

17、生鲜电商平台-异常模块的设计与架构

JsonResult jsonResult=new JsonResult(JsonResultCode.FAILURE,"系统错误,请联系管理员","");return new JsonResult(JsonResultCode.FAILURE, "系统错误,请稍后重试","");return new JsonResult(JsonResultCode.FAILURE, "系统错误,请稍后重试","");logger.error("异常:" + ex.getMessage(), ex);

竹林幽深 140

实战指南:如何用Frida绕过某梆加固的Anti-Frida检测(附完整脚本)

本文深入剖析了企业级加固方案中的Anti-Frida检测机制,并提供了实战对抗策略。通过分析基于文件系统、内存特征、行为及环境的多层次检测原理,文章详细介绍了如何定位检测逻辑、绕过maps文件扫描、对抗内存与行为特征检测,并附上了针对某梆加固的完整绕过脚本与系统化工程方案。

weixin_42527589的博客 601

Freemarker整合poi导出带有图片的Excel教程

Freemarker整合poi导出带有图片的Excel教程 https://blog.youkuaiyun.com/x541211190/article/details/105675771根据此人博客可完成此功能,但原文中有一处错误需要纠正,当单元格合并时,计算起始单元格有错误。 源代码: /** * 构造合并单元格集合 * * @param createRowIndex: * @param cellRangeAddresses: * @param startIndex: * @param c

weixin_39403349的博客 1004

Java异常面试题 33道

Java异常架构与异常关键字 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制。 Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程 序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型 回答了“什么”被抛出,异常堆栈跟踪回答了“在哪”抛出,异常信息回答了“为什么”会抛出。 Java异常架构 Throwable Throwable 是 Java 语言中所有错误与异常的超类。 Throwab

qq_46306282的博客 1072

黑猫带你学eMMC协议第4篇:eMMC概述

1 前言 声明: 本文依据eMMC JEDEC5.1协议及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 本文大约3000字,从emmc的内部结构框架、供电、总线、寄存器等各方面进行框架性的介绍,本章节内容不需要深入研究,读完本篇文章,只要能对emmc有个框架下的了解,就可以了。 2 内部结构框架 由图可以看出,emmc内部由两块组成:控制器 + 存储介质。emmc内部存储介质绝大部分为nand flash。 众所周知,我们需要存储数据到nand flash中,并

黑猫奥利奥的博客 3343

Java异常面试题

针对Java异常面试题

qq_42278950的博客 412

机器人视觉联动精度优化:从±2mm到±0.02mm,产线级手眼标定全实战

2025年我接东莞长安Type-C接口分拣项目的时候,就是栽在了手眼标定上:实验室里标定完精度±0.5mm,一到产线直接掉到±2mm,机器人10次有3次抓不住,2000多件Type-C接口直接报废,还撞坏了2套汇川SCARA机器人的吸盘,本来45天的工期拖了3个月,不仅没赚到钱,还倒贴了几万块。手眼标定从来不是简单的跑个demo、算个矩阵就完事了,它是一个系统工程:从硬件选型、安装固定、相机标定、标定流程、算法优化、环境控制、重复验证,每一个环节都会影响最终的联动精度。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 390

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

jks212454的博客 423

Java异常常见面试题

有一系列的方法调用,终才进 入抛出异常的方法,这一系列方法调用的有序列表叫做调用栈。类的错误是可以在应用程序中进行捕获并处理的,通常遇到这种错 误,应对其进行处理,使。关键字用在方法内部,只能用于抛出一种异常,用来抛出方法或代码块中 的异常,受查异常。关键字用在方法声明上,可以抛出多个异常,用来标识该方法可能抛出 的异常列表。中的异常处理除了包括捕获异常和处理异常之外,还包括声明异常和拋出 异常,可以通过。标识了可能抛出的异常列表,调用该方法的方法中 必须包含可处理异常的代码,否。创建异常 对象并转交给。

2301_77783312的博客 1055

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

JAVA异常架构图及常见面试题

红色为检查异常,就是eclipse要提示你是try catch 还是throws。 非检查异常,就是/0,nullpointexception,数据越界访问indexOfOutBounds 异常 错误: 最常见的oom错误,还有classnotFoundeError,StackOverflowError: java异常处理面试题归纳 1、error和...

171

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JAVA异常架构图及面试题

JAVA异常架构图及面试题

xuan2717的博客 108

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java 异常图_JAVA异常架构图及面试题

红色为检查异常,就是eclipse要提示你是try catch 还是throws。非检查异常,就是/0,nullpointexception,数据越界访问indexOfOutBounds 异常错误: 最常见的oom错误,还有classnotFoundeError,StackOverflowError:java异常处理面试题归纳1、error和exception有什么区别error表示系统级的错误...

weixin_39744316的博客 83

5个一般异常 java_JAVA异常架构图及常见面试题

红色为检查异常,就是eclipse要提示你是try catch 还是throws。非检查异常,就是/0,nullpointexception,数据越界访问indexOfOutBounds 异常错误: 最常见的oom错误,还有classnotFoundeError,StackOverflowError:java异常处理面试题归纳1、error和exception有什么区别error表示系统级的错误...

weixin_30824577的博客 151

想成为Java架构师?先学会如何画好架构图吧!

明确这两点之后,从受众角度来说,一个好的架构图是不需要解释的,它应该是自描述的,并且要具备一致性和足够的准确性,能够与代码相呼应。三、画架构图遇到的常见问题1、方框代表什么?为什么适用方框而不是圆形,它有什么特殊的含义吗?随意使用方框或者其它形状可能会引起混淆。2、虚线、实线什么意思?箭头什么意思?颜色什么意思?随意使用线条或者箭头可能会引起误会。3、运行时与编译时冲突?层级冲突?架构是一项复杂的工作,只使用单个图表来表示架构很容易造成莫名其妙的语义混乱。四、本文推荐的画图方法。

m0_63102527的博客 1076

java异常架构图 和几个面试题

1.java异常架构图 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕捉处理,命名为 CHecked Exception 是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守.绿色的异常是运行时异常(runtime exceptio...

weixin_30687051的博客 81

74道高级Java面试合集,java开发模式面试题

前言 今天我们来说说Redis为什么高性能?如何做高可用? Redis为什么这么快? Redis是单线程的,避免了多线程的上下文切换和并发控制开销; Redis大部分操作时基于内存,读写数据不需要磁盘I/O,所以速度非常快; Redis采用了I/O多路复用机制,提高了网络I/O并发性; Redis提供高效的数据结构,如跳跃表、哈希表等; 一、Java 虚拟机架构 (JVM Architecture) 在我看来,不管学习什么样的知识或技术,首先要做的就是从全局上去认识它,这样才能避免盲人摸象,事倍功半

EDGNB123的博客 1万+

异常面试题

Java 基础 --- 异常处理

qq_55912056的博客 126

2024年最新Java异常处理的误区和经验总结,springcloud架构图及原理

分布式技术专题+面试解析+相关的手写和学习的笔记pdf本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取一次,进而丢失了原有的 RuntimeException 携带的有效信息。分布式技术专题+面试解析+相关的手写和学习的笔记pdf还有更多Java笔记分享如下:[外链图片转存中…(img-dQ22kNI1-1715146110858)]本文已被。

2401_84584289的博客 685

一文整理总结常见Java后端面试题系列——Spring篇(2022最新版)

一、基本概念 1、Spring 是什么? Spring 是一个轻量级 Java 开发框架,最早有 Rod Johnson 创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的 JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发 Java 应用程序提供全面的基础架构支持。Spring 负责基础架构,因此 Java 开发者可以专注于应用程序的开发。Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。 2、Spring 带来哪些好处

程序猿周周的博客 2万+

java的异常机制面试题(转)

转自https://www.jianshu.com/p/2b4e02f7fa19 转自https://www.cnblogs.com/xiaotangtang/p/4904866.html https://blog.youkuaiyun.com/weixin_42182713/article/details/90739924 Java 对异常进行了分类,不同类型的异常分别用不同的...

weixin_30768661的博客 127
上一篇: mysql免安装版的步骤、mysql 服务不见了已经解决
下一篇: JAVA异常架构图及面试题、及其断言
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值