网站首页 > 精选教程 正文
Java中的异常处理不是一个容易的话题。初学者很难理解,即使是经验丰富的开发人员也可以花几个小时讨论应该如何抛出或处理哪些Java异常。
这就是为什么大多数开发团队都有自己的一套关于如何使用它们的规则。如果你是一个团队的新手,你可能会惊讶于这些规则与你以前使用过的规则有多么不同。
什么是异常?
简而言之,异常是程序执行过程中的异常情况。
出现问题时会发生异常。试图打开文件,但文件不存在?这就是异常。试图对对象调用方法,但变量为空?这也是异常。
什么是异常处理?
异常是不应该发生的坏事。但既然它们确实发生了,我们就需要处理它们。这种“处理”就是我们所说的异常处理。
异常处理是一种错误处理机制。当出现问题时,会抛出异常。如果不执行任何操作,则异常会导致应用程序崩溃。
或者您可以选择处理异常。也就是说,您确认问题发生了,防止应用程序崩溃,并采取必要的步骤,以便从错误中恢复或失败。
一如既往的错误处理
异常处理是一种错误处理机制,但它不是唯一的机制。如今,绝大多数编程语言都将异常处理作为一项功能提供,但情况并不总是这样。
没有异常的语言如何处理错误?
一种流行的方法是返回错误代码。例如,假设您有一个C函数,它接受一个整数数组和一个整数,然后搜索并返回与指定数字匹配的第一个项的索引。
当在数组中找不到该项时该怎么办?一个普遍的选择是返回-1。这种方法的优点是让代码易于推理:不会打断代码,也不会跳过代码。只是返回值的旧函数。
另一方面,这种错误处理策略鼓励函数的使用者始终检查错误值。
这些验证的数量之多会使代码受到污染。大量的防御性检查可能会隐藏重要的业务逻辑,从而降低代码的可读性和可维护性。
错误代码的另一个严重缺点是缺乏上下文。您可能知道代码“-5”意味着找不到某个文件,但哪个文件?整数不能轻易携带该信息。
这种方法的另一个问题是,有时,您无法返回值(例如,想想构造函数)。初始化对象时出错?有了错误代码,你就无能为力了。
异常的例外情况
出现异常是为了解决你刚刚读到的问题。
当抛出异常时,程序的控制流被中断。如果没有人处理该异常,则会导致程序崩溃。用户将看到异常消息,但他们很可能无法理解。消息甚至可能无法本地化为其语言。
简而言之,这不是一个好的用户体验。
因此,您需要处理异常(即使只是为了记录问题、显示更友好的错误消息,然后退出应用程序)。
为了处理抛出的异常,我们必须捕获它。我们通过使用异常处理块来实现这一点。当我们捕获异常时,程序的流控制被处理到异常处理块。在那里,我们可以做出必要的安排来处理例外情况。
- 上一篇: Java 异常处理一览 | 基础篇
- 下一篇: JAVA 线上故障排查全套路
猜你喜欢
- 2024-11-20 Java中的异常
- 2024-11-20 小白也能看懂的Java异常处理机制
- 2024-11-20 JVM是如何处理各种异常的呢?
- 2024-11-20 Java异常之异常处理类详解和代码举例
- 2024-11-20 第25天|Java入门有野,异常处理
- 2024-11-20 java安全编码指南之:异常处理
- 2024-11-20 解读Java编程思想--异常处理
- 2024-11-20 Java中异常处理机制的详细解析及其优化示例代码
- 2024-11-20 学习java, 需要知道的异常处理
- 2024-11-20 java异常处理
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)