今天看到了异常处理,处理过程和语法看得懂,但不是很明白java为什么需要异常处理机制,受检异常编译不会通过,异常处理机制捕获或者抛出都是针对非受检异常,举的例子是1/0和一个索引越界,既然我们知道不能除以0,就不去除啊,知道索引不能越界,就不越界啊,为啥要产生异常再去处理异常呢?为什么不通过参数合法化判断,判空等操作写出更健壮的代码,从根本上杜绝异常的产生?
查阅很多资料和博客,关于异常都是介绍其机制,我想知道为啥必须要有这个机制,他的出现解决了什么问题,就像Math类,封装了许多数学的工具,异常类出现究竟优化了什么。
异常类既然是类,就说明他很有可能在java刚诞生时候,并没有这个类,哪个时候java是怎么处理出现的错误?
Java为什么需要异常类,没有异常类之前怎么检查错误?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-微编程 2021-08-01 20:15关注
但是有些是你不可避免的呀,比如
1.用户输入了非法数据。
2.要打开的文件不存在。
3.网络通信时连接中断,或者JVM内存溢出。
这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。这些基本上都是不可避免的,就比如说1/0异常,你虽然知道,但是程序员做程序是给用户用的,那用户故意输入一个数除以0该怎么办,难不成一个输入异常就报错,直接让程序瘫痪,而不是解决一下异常或者抛出让其他调用的方法来执行吗?还有文件有的时候根据某些操作删除了,不去处理异常能行吗,虽然程序员明白不该犯这个低级错误,但是能保证所有的用户都一样吗?参数合法化判断,非空判断,都会影响代码执行的速度,不建议使用在后端,而是使用在前端,通过正则表达式来进行参数约束,这样直接在前端提醒用户,前端就不再给后端发送请求,所以不用再跑一遍后端,节约了不少时间本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 Matlab打开默认名称带有/的光谱数据
- ¥50 easyExcel模板 动态单元格合并列
- ¥15 res.rows如何取值使用
- ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
- ¥15 CSP算法实现EEG特征提取,哪一步错了?
- ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
- ¥15 vue3前端取消收藏的不会引用collectId
- ¥15 delphi7 HMAC_SHA256方式加密
- ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
- ¥15 下列c语言代码为何输出了多余的空格