兰林汉的驴粉丝儿 2021-08-01 19:52 采纳率: 50%
浏览 24
已结题

Java为什么需要异常类,没有异常类之前怎么检查错误?

今天看到了异常处理,处理过程和语法看得懂,但不是很明白java为什么需要异常处理机制,受检异常编译不会通过,异常处理机制捕获或者抛出都是针对非受检异常,举的例子是1/0和一个索引越界,既然我们知道不能除以0,就不去除啊,知道索引不能越界,就不越界啊,为啥要产生异常再去处理异常呢?为什么不通过参数合法化判断,判空等操作写出更健壮的代码,从根本上杜绝异常的产生?
查阅很多资料和博客,关于异常都是介绍其机制,我想知道为啥必须要有这个机制,他的出现解决了什么问题,就像Math类,封装了许多数学的工具,异常类出现究竟优化了什么。
异常类既然是类,就说明他很有可能在java刚诞生时候,并没有这个类,哪个时候java是怎么处理出现的错误?

  • 写回答

1条回答 默认 最新

  • CSDN专家-微编程 2021-08-01 20:15
    关注

    但是有些是你不可避免的呀,比如
    1.用户输入了非法数据。
    2.要打开的文件不存在。
    3.网络通信时连接中断,或者JVM内存溢出。
    这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。这些基本上都是不可避免的,就比如说1/0异常,你虽然知道,但是程序员做程序是给用户用的,那用户故意输入一个数除以0该怎么办,难不成一个输入异常就报错,直接让程序瘫痪,而不是解决一下异常或者抛出让其他调用的方法来执行吗?还有文件有的时候根据某些操作删除了,不去处理异常能行吗,虽然程序员明白不该犯这个低级错误,但是能保证所有的用户都一样吗?参数合法化判断,非空判断,都会影响代码执行的速度,不建议使用在后端,而是使用在前端,通过正则表达式来进行参数约束,这样直接在前端提醒用户,前端就不再给后端发送请求,所以不用再跑一遍后端,节约了不少时间

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 8月1日

悬赏问题

  • ¥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语言代码为何输出了多余的空格