【Java】异常的处理-方式【主线学习笔记】

打印 上一主题 下一主题

主题 1840|帖子 1840|积分 5520

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

前言

   Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记载学习过程中的基础语法、框架和实践本事等,分享学习心得,对自己学习过程举行整理和总结,也盼望能为其他学习Java的朋友提供一些帮助和参考。
  
1、处理概述

在编写步伐时,大概会碰到各种错误或异常情况。比方,在执行除法运算时,分母为零会导致步伐瓦解;访问数组时超出边界会引发ArrayIndexOutOfBoundsException。为了避免这些问题,步伐员需要在大概出现错误的地方加上检查代码,这往往会导致代码冗长且可读性差。因此,Java引入了异常处理机制,可以或许集中处理错误,使得步伐更加简洁、优雅并易于维护。
2、Java异常处理机制(方式)

Java的异常处理机制主要包括以下几种方式:
方式一(抓抛模型):try-catch-finally

这是Java最常用的异常处理结构。


  • 过程1:“抛”,步伐在执行的过程当中,一旦出现异常,就会在出现异常的代码处,生成对应异常类的对象,并将此对象抛出一旦出,此步伐就不执行厥后的代码了。
  • 过程2:“抓”,针对于过程1中抛出的异常对象,举行捕获处理。此捕获处理的过程,就称为抓。一旦将异常举行了处理,代码就可以继续执行。
其基本语法如下:
  1. try {
  2.     // 可能会抛出异常的代码块
  3. } catch (异常类型1 e) {
  4.     // 处理异常的代码块
  5. } catch (异常类型2 e) {
  6.     // 处理异常的代码块
  7. } finally {
  8.     // 无论是否发生异常,都会执行的代码块
  9. }
复制代码


  • try块:用于包围大概抛出异常的代码。如果代码块中发生异常,就会自动生成一个对应异常类的对象,并将此对象抛出。
  • catch块:用于处理try块中发生的特定类型的异常。针对try中抛出的异常的对象,与catch语句举行匹配,一旦匹配上,就进入catch语句举行处理。可以有多个catch块来处理不同类型的异常。
  • finally块:可选的代码块,无论try块或者catch中是否发生异常,无论try中或者catch中是否存在return语句等,finally块中的代码都会执行。通常用于清理资源,如关闭文件、数据库连接等。唯一例外,使用System.exit(0)来种植当前正在运行的java虚拟机。
使用细节
多个catch块的处理:


  • 同层次异常:如果声明白多个catch块,不同异常类型之间不存在父子关系时,顺序可以自由安排。
  • 父子类关系:如果多个异常类型存在父子关系,必须将子类的catch块放在父类的前面。否则,父类的catch块会捕获所有子类异常,导致子类catch块无法被执行,从而出现编译错误。
catch中异常处理的方式,方式有多种:


  • 自定义输出语句: 可以编写自定义的输出信息,提示用户或记载日志。这种方式适用于简单的错误处理。
  • printStackTrace(): 使用此方法可以打印异常的详细信息,包括异常的类型、错误信息以及异常发生时的调用栈。 因为它可以或许帮助开发者快速定位问题。
  • getMessage(): 使用此方法可以获取发生异常的缘故原由,返回一个描述性的信息。适用于需要扼要提示的场景。
什么样的代码需要放在finally当中?


  • 开发中,一些资源,如输入流、输出流,数据库连接、Socket连接等资源,在使用完以后,必须显示的举行关闭操作,否则,GC不会自动的接纳这些资源,从而导致内存泄漏,因此必须将这些操作声明在finally中。
try中声明的变量,出了try结构之后,就不举行调用了。
示例:
  1. try {
  2.     int result = 10 / 0; // 可能会抛出ArithmeticException
  3. } catch (ArithmeticException e) {
  4.     System.out.println("除数不能为零!" + e.getMessage());
  5. } finally {
  6.     System.out.println("无论如何我都会执行。");
  7. }
复制代码
方式二:throws + 异常类型

throws关键字用于声明方法大概抛出的异常。这并不处理异常,而是将异常抛给了给该方法的调用者,该调用者仍然需要考虑怎样处理相干异常。语法如下:
  1. public void myMethod() throws 异常类型 {//表示下面代码中可能会出现的代码
  2.     // 可能抛出异常的代码
  3. }
复制代码
当方法调用者调用这个方法时,必须使用try-catch语句来处理大概抛出的异常。
使用细节


  • 子类重写的方法抛出的异常类型可以与父类被重写的方法抛出的异常类型相同,或是父类被重写的方法抛出的异常类型的子类。
示例:
  1. public void readFile(String filePath) throws IOException {
  2.     FileReader file = new FileReader(filePath);
  3.     // 处理文件
  4. }
  5. public void process() {
  6.     try {
  7.         readFile("somefile.txt");
  8.     } catch (IOException e) {
  9.         System.out.println("文件读取失败!" + e.getMessage());
  10.     }
  11. }
复制代码
总结

Java的异常处理机制通过try-catch-finally和throws关键字,有效地将错误处理与正常步伐逻辑分开,加强了代码的可读性和可维护性。使用异常处理,可以更优雅地处理步伐运行中的各种不测情况,提高了步伐的结实性。
如果你有详细的例子或想讨论的细节,请告诉我!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表