建立网站就是制作网页什么地方可以做网站

张小明 2026/1/19 18:54:13
建立网站就是制作网页,什么地方可以做网站,网站设计定做,公司域名查询网站文章目录 一、什么是异常 1.1 异常的概念1.2 异常的分类 二、异常的体系结构三、异常的处理 3.1 异常的抛出3.2 异常的捕获与处理3.3 异常的处理流程 四、自定义异常类 4.1 自定义异常类的规则4.2 自定义异常案例 一、什么是异常 1.1 异常的概念 在Java中#xff0c;异常异常Exception是指程序执行过程中可能出现的不正常情况或错误。它是一个事件它会干扰程序的正常执行流程并可能导致程序出现错误或崩溃。异常在Java中是以对象的形式表示的这些对象是从java.lang.Throwable类或其子类派生而来。Throwable是异常类层次结构的根类它有两个主要的子类java.lang.Exception和java.lang.Error。Exception异常java.lang.Exception是表示可检查异常的基类。可检查异常是指在编译时需要显式处理的异常。Exception类及其子类用于表示程序运行过程中可能出现的外部条件、错误或其他可恢复的情况。例如文件未找到、网络连接中断、输入格式错误等。开发人员需要通过捕获或声明这些异常来确保在程序中进行适当的异常处理。Error错误java.lang.Error是表示严重问题或系统级错误的基类。错误是指那些程序通常无法处理或恢复的情况例如内存溢出、堆栈溢出、虚拟机错误等。与异常不同错误不需要在程序中显式处理因为它们通常表示了无法解决的问题。异常在Java中通过抛出throw和捕获catch的方式进行处理。当程序执行到可能引发异常的代码时可以使用throw语句手动抛出异常对象。然后可以使用try-catch语句块来捕获异常并在catch块中提供相应的异常处理逻辑。在catch块中可以根据异常的类型执行适当的操作如日志记录、错误报告或异常处理。如果异常没有在当前方法中被捕获处理它将继续向上级调用栈传播直到找到合适的异常处理代码或导致程序终止。1.2 异常的分类在Java中异常可以按照其类型进行分类。下面是Java中异常的主要分类可检查异常Checked Exceptions可检查异常是指在编译时会被检查的异常程序必须显式地处理它们否则编译器会报错。可检查异常通常表示程序在运行过程中可能出现的外部条件或错误。例如文件不存在、网络连接问题等。可检查异常是Exception类及其子类的实例。运行时异常Runtime Exceptions运行时异常也被称为非检查异常Unchecked Exceptions。这些异常在编译时不会被强制检查而是在程序运行时才会抛出。运行时异常通常表示程序内部的错误或逻辑错误例如空指针引用、除以零等。运行时异常是RuntimeException类及其子类的实例。错误Errors错误表示Java虚拟机JVM本身出现的严重问题通常无法恢复或处理。错误可能是内存溢出、堆栈溢出等严重问题。与异常不同错误一般不应该被捕获和处理因为它们指示了无法解决的问题。错误是Error类及其子类的实例。这些异常类型的区别在于编译器对它们的检查方式以及程序员对它们的处理要求。可检查异常在编译时要求显式处理要么通过try-catch块捕获并处理要么通过在方法签名中声明该异常并由调用者处理。运行时异常可以选择捕获和处理但不是强制要求。而错误通常不应该被捕获和处理。二、异常的体系结构在Java中异常类的体系结构是通过继承关系组织的。以下是Java异常类的体系结构图及其说明Throwable是异常类体系结构的根类。它是所有异常类的超类直接或间接地派生了Error和Exception两个主要子类。Error表示严重的问题或系统级错误它们通常是由Java虚拟机JVM本身引起的例如内存溢出、堆栈溢出等。程序通常无法恢复或处理这些错误。Exception是表示可检查异常的基类。它包括两个主要的分支RuntimeException是运行时异常的基类它表示程序内部错误或逻辑错误。这些异常通常是由编程错误引起的例如空指针引用、除以零等。运行时异常在编译时不会被强制检查因此可以选择捕获和处理它们但也可以选择不处理。Exception的其他子类表示其他可检查异常例如输入/输出异常IOException、SQL异常SQLException等。这些异常在编译时会被强制检查程序必须显式地处理它们否则会导致编译错误。Java异常类体系结构的组织方式使得开发人员可以根据异常的类型和性质来选择适当的异常类来表示和处理不同类型的异常情况。这种结构使得异常处理更加灵活和可扩展并且提供了一致的异常处理机制。三、异常的处理3.1 异常的抛出在Java中异常的抛出是通过使用throw关键字来实现的。throw关键字用于抛出一个异常对象将异常传递给调用者或上层调用栈。以下是异常的抛出示例public class Example { public static void main(String[] args) { try { int result divide(10, 0); // 调用自定义方法 System.out.println(结果 result); } catch (ArithmeticException e) { System.out.println(发生了算术异常 e.getMessage()); } } public static int divide(int num1, int num2) { if (num2 0) { throw new ArithmeticException(除数不能为零); // 抛出算术异常 } return num1 / num2; } }在上面的示例中divide()方法用于计算两个数的除法操作。如果除数为零将会抛出一个算术异常ArithmeticException。在main()方法中我们调用了divide()方法并使用try-catch块来捕获可能抛出的异常。如果捕获到算术异常将会输出相应的错误信息。另外除了手动抛出异常Java还提供了许多内置的异常类例如NullPointerException、ArrayIndexOutOfBoundsException等。这些异常类可以在特定情况下自动抛出无需显式使用throw关键字。以下是一个示例演示了数组越界异常的自动抛出public class ArrayExample { public static void main(String[] args) { int[] arr {1, 2, 3}; try { int value arr[5]; // 数组越界将抛出ArrayIndexOutOfBoundsException异常 } catch (ArrayIndexOutOfBoundsException e) { System.out.println(发生了数组越界异常 e.getMessage()); } } }在上面的示例中我们尝试访问数组中索引为5的元素而实际数组只有3个元素因此会抛出一个数组越界异常ArrayIndexOutOfBoundsException。通过try-catch块捕获该异常并输出错误信息。异常的抛出和捕获机制使得程序能够在出现异常情况时进行适当的处理避免程序崩溃或产生不可预测的结果。通过合理地抛出和处理异常可以增加程序的可靠性和健壮性。3.2 异常的捕获与处理异常声明throws在Java中使用throws关键字可以在方法声明中指定该方法可能抛出的异常类型。通过使用throws关键字方法可以将异常的处理责任委托给调用者而不是在方法内部处理异常。以下是异常声明throws的示例public class Example { public static void main(String[] args) { try { readFile(file.txt); // 调用自定义方法 } catch (FileNotFoundException e) { System.out.println(文件未找到 e.getMessage()); } } public static void readFile(String filename) throws FileNotFoundException { // 尝试打开文件 // 如果文件不存在将抛出FileNotFoundException异常 FileInputStream fis new FileInputStream(filename); // 其他处理逻辑... } }在上面的示例中readFile()方法用于读取指定文件的内容。由于打开文件可能出现文件不存在的情况因此在方法声明中使用了throws FileNotFoundException来指定该方法可能抛出的异常类型。这样调用者在调用readFile()方法时必须处理或继续向上抛出该异常。在main()方法中我们调用了readFile()方法并使用try-catch块来捕获可能抛出的FileNotFoundException异常。如果捕获到异常将会输出相应的错误信息。需要注意的是如果一个方法声明了抛出异常但在方法内部没有实际抛出该异常编译器会报错。因此在使用throws关键字声明异常时需要确保方法内部的代码可能会抛出相应的异常。通过使用throws关键字声明异常可以将异常处理的责任从方法内部转移到调用者处使得代码更加清晰和模块化。同时它也提供了更大的灵活性允许在调用链中的合适位置进行异常处理。try-catch捕获并处理在Java中可以使用try-catch语句块来捕获和处理异常。try-catch语句块允许我们在执行可能引发异常的代码时捕获并处理异常从而防止程序终止或产生不可预测的结果。以下是try-catch捕获和处理异常的示例public class Example { public static void main(String[] args) { try { int result divide(10, 0); // 调用自定义方法 System.out.println(结果 result); } catch (ArithmeticException e) { System.out.println(发生了算术异常 e.getMessage()); } } public static int divide(int num1, int num2) { try { return num1 / num2; } catch (ArithmeticException e) { throw new ArithmeticException(除数不能为零); // 抛出算术异常 } } }在上面的示例中divide()方法用于计算两个数的除法操作。在方法内部我们使用了try-catch语句块来捕获可能发生的算术异常。如果除数为零将抛出一个算术异常ArithmeticException。在main()方法中我们调用了divide()方法并使用try-catch块捕获可能抛出的算术异常。如果捕获到异常将会输出相应的错误信息。需要注意的是当异常被捕获时程序将跳转到匹配的catch块并执行其中的代码。在catch块中我们可以根据异常的类型执行相应的操作例如输出错误信息、记录日志或进行其他处理逻辑。通过使用try-catch语句块我们可以在程序中有选择地捕获和处理异常从而保证程序的正常执行。这种异常处理机制使得代码更加健壮能够在面对异常情况时进行适当的处理和恢复避免程序崩溃或产生不可预测的结果。finally代码块在Java中finally代码块用于定义无论是否发生异常都会被执行的代码。无论是在异常被捕获和处理后还是在异常未被捕获时finally代码块中的代码都会被执行。finally代码块通常用于释放资源或执行必要的清理操作。下面是使用Scanner的示例演示了finally代码块的使用import java.util.Scanner; public class Example { public static void main(String[] args) { Scanner scanner null; try { scanner new Scanner(System.in); System.out.print(请输入一个整数: ); int num scanner.nextInt(); System.out.println(输入的整数是: num); } catch (Exception e) { System.out.println(发生了异常: e.getMessage()); } finally { if (scanner ! null) { scanner.close(); // 释放资源 } } } }在上面的示例中我们使用了Scanner类来读取用户的输入整数。在try块中我们创建了一个Scanner对象并读取用户的输入。如果在输入过程中发生异常将会被捕获并输出相应的错误信息。不管是否发生异常finally代码块中的代码都会执行。在这个示例中我们在finally块中检查Scanner对象是否为空如果不为空则调用close()方法来释放资源。通过使用finally代码块我们可以确保无论发生什么情况资源都能得到正确地释放。这在需要处理资源如文件、网络连接等的情况下非常重要以防止资源泄漏和程序不稳定性。需要注意的是finally代码块并不是必需的可以选择省略。但是如果使用了finally代码块它将始终执行无论是否发生异常。3.3 异常的处理流程异常的处理流程可以概括为以下几个步骤执行可能引发异常的代码块。这部分代码通常被包裹在try块中。当在try块中发生异常时程序会立即跳转到与异常类型匹配的catch块。catch块用于捕获和处理特定类型的异常。在匹配的catch块中根据异常的类型执行相应的操作例如输出错误消息、记录日志或采取其他处理措施。多个catch块可以按照顺序排列以处理不同类型的异常。如果没有匹配的catch块或异常在catch块中未被处理异常将被传递给上一级调用栈继续寻找异常处理代码。如果在当前方法中没有合适的异常处理代码异常将继续向上层调用栈传递直到找到能够处理异常的地方。如果在调用栈中找到能够处理异常的catch块相应的异常处理代码将被执行。在异常处理完成后程序将继续执行try-catch结构之后的代码。如果存在finally代码块不论异常是否发生finally中的代码都会被执行。finally代码块通常用于释放资源、进行清理操作或确保一些必要的代码逻辑得以执行。通过这样的异常处理流程可以捕获和处理异常避免程序的意外终止并进行适当的错误处理。异常处理使得代码具备了更好的健壮性和容错性可以保证程序在异常情况下的正常运行并提供相应的错误信息和处理机制。四、自定义异常类4.1 自定义异常类的规则在Java中可以通过创建自定义异常类来表示和处理特定的异常情况。以下是关于自定义异常类的一些规则自定义异常类应继承自Exception类或其子类。通常如果自定义异常类表示非检查异常则可以继承RuntimeException类或其子类。自定义异常类应提供适当的构造方法。通常至少应包含一个带有异常信息的构造方法以便在抛出异常时传递详细信息。可以根据需要添加其他构造方法以便传递更多的异常信息和原因。自定义异常类可以添加自定义的方法和逻辑以满足特定需求。例如可以添加用于获取特定信息的方法或执行特定操作的方法。自定义异常类的命名应具有描述性并遵循Java的命名约定。通常类名以Exception结尾是一种常见的命名约定例如MyCustomException。自定义异常类可以根据特定的异常情况进行层次化。您可以创建自定义异常类的层次结构通过继承关系来表示不同级别或类型的异常。这有助于更好地组织和处理不同类型的异常。以下是一个示例展示了一个自定义异常类的规则和示例代码public class MyCustomException extends Exception { public MyCustomException() { super(); } public MyCustomException(String message) { super(message); } public MyCustomException(String message, Throwable cause) { super(message, cause); } public MyCustomException(Throwable cause) { super(cause); } // 可以添加自定义的方法和逻辑 }在上述示例中创建了一个名为MyCustomException的自定义异常类。该类继承自Exception类并提供了多个构造方法以便在抛出异常时传递不同的异常信息和原因。4.2 自定义异常案例这里实现一个用户登陆功能在登录的时候对用户名和密码进行校验登录和校验的逻辑如下public class Login { private String userName admin; private String password 123456; public void loginInfo(String userName, String password) { try{ if (!this.userName.equals(userName)) { throw new UserNameErrorException(用户名错误); // System.out.println(用户名错误); // return; } if (!this.password.equals(password)) { throw new PasswordException(密码错误); // System.out.println(密码错误); // return; } System.out.println(登陆成功); } catch (UserNameErrorException | PasswordException e){ e.printStackTrace(); } } public static void main(String[] args) { Login login new Login(); login.loginInfo(admin, 123456); } }在上述代码中Login类包含了一个名为loginInfo的方法该方法接受用户名和密码作为参数。在方法中我们使用try-catch块来捕获可能抛出的UserNameErrorException和PasswordException异常。在try块中我们检查输入的用户名和密码是否与预定义的用户名和密码匹配。如果不匹配我们抛出相应的异常即UserNameErrorException或PasswordException。如果用户名和密码都正确将输出登录成功。在catch块中我们捕获并处理可能抛出的异常。通过调用printStackTrace()方法异常的堆栈跟踪信息将被打印出来以便进行错误排查和调试。在main方法中创建一个Login对象并调用loginInfo方法来进行登录测试。在本例中我们传递了正确的用户名和密码因此输出将是登录成功。如果用户名或密码错误将在控制台上打印异常的堆栈跟踪信息。自定义异常类PasswordException和UserNameErrorExceptionpublic class PasswordException extends RuntimeException{ public PasswordException(){ super(); } public PasswordException(String message){ super(message); } } public class UserNameErrorException extends RuntimeException{ public UserNameErrorException(){ super(); } public UserNameErrorException(String message){ super(message); } }在上述代码中PasswordException和UserNameErrorException类都继承自RuntimeException类因此它们都是非检查异常。这两个异常类提供了两个构造方法无参构造方法调用父类RuntimeException的无参构造方法用于创建一个没有特定错误信息的异常对象。带有字符串参数的构造方法调用父类RuntimeException的带有字符串参数的构造方法用于创建一个带有特定错误信息的异常对象。通过定义这两个自定义异常类可以在需要时抛出PasswordException和UserNameErrorException异常并传递适当的错误信息。这样可以更好地处理与密码和用户名相关的异常情况并提供有关错误的详细信息。根据最近的行业调研和招聘数据AI的发展确实对Java工程师提出了新挑战但也带来了明确的转型机遇。其现状可概括为市场分化明显初级岗位收缩但“JavaAI”的复合型人才需求正在崛起。️ 给Java工程师的转型行动建议转变核心角色定位目标应从“业务代码实现者”转向 “智能系统构建者” 或 “AI与业务的中枢架构师” 。这意味着你的核心价值在于设计能容纳AI能力的系统、确保其稳定高效运行并深刻理解业务以找到AI的最佳落地场景构建“Java AI”双技能栈巩固Java深度深入JVM性能调优、分布式系统设计这是你区别于纯AI算法工程师的基石。学习AI应用层技术不必从零开始研究算法。优先学习如何使用AI工具和框架例如Prompt Engineering提示词工程高效驱动大模型的关键技能。AI应用框架学习 LangChain4J、Spring AI 等掌握在Java中集成和调度AI模型的方法。向量数据库了解Milvus等这是构建AI语义搜索、推荐系统的基础。从“用AI辅助编程”开始实践立即在日常工作中使用GitHub Copilot等工具亲身体验其如何改变工作流。同时警惕过度依赖将节约出的时间用于更高层的设计和优化工作。选择垂直领域深耕将你的Java经验与某个行业如金融、医疗、工业物联网结合成为既懂行业业务又懂AI落地解决方案的专家这会形成强大的竞争壁垒。因此捕获AI掌握技术是关键让AI成为我们最便利的工具.一定要把现有的技术和大模型结合起来而不是抛弃你们现有技术掌握AI能力的Java工程师比纯Java岗要吃香的多。即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇如何学习AGI大模型作为一名热心肠的互联网老兵我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

东莞网站的制作设计wordpress 主题 国外

基于Qwen3-8B构建智能对话系统:从ollama下载到部署 在大模型席卷各行各业的今天,越来越多企业开始尝试将AI助手嵌入业务流程——客服自动应答、合同内容提取、知识库问答……但现实往往令人却步:主流闭源模型如GPT-4虽强,却存在数…

张小明 2026/1/17 20:59:49 网站建设

网站开发去哪里培训西乡塘网站建设

小米MiMo-Audio:重新定义音频AI的少样本泛化范式 【免费下载链接】MiMo-Audio-7B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/XiaomiMiMo/MiMo-Audio-7B-Instruct 在人工智能技术快速演进的今天,音频大模型正经历从"任务专属&q…

张小明 2026/1/17 20:59:50 网站建设

做一个销售网站需要多少钱wordpress怎样添加备案

海外房地产投资指南:南非与法国的投资攻略 1. 南非房地产投资 1.1 背景与动机 Aleet 成长于南非的葡萄酒产区,但随父亲前往美国旧金山。成年后,她成为美国公民并积累了一定财富。看到南非的积极变化,尤其是种族隔离政策结束后国家的发展,她决定将房地产投资经验应用到南…

张小明 2026/1/17 20:59:51 网站建设

网站建设的原因开发个网站开票名称是什么

第一章:Open-AutoGLM如何重塑内容创作范式Open-AutoGLM 作为新一代开源自动语言生成模型,正以强大的语义理解与多模态生成能力,深刻改变传统内容创作的工作流程与表达边界。其核心优势在于融合了指令微调、上下文感知推理与低延迟输出机制&am…

张小明 2026/1/17 20:59:53 网站建设

网站界面设计原则网站首页设计素材

第一章:Open-AutoGLM模型概述Open-AutoGLM 是一个开源的自动化通用语言生成模型,旨在通过模块化架构实现高效、可扩展的自然语言处理能力。该模型融合了大规模预训练与任务自适应机制,支持文本生成、语义理解、多轮对话等多种应用场景。其核心…

张小明 2026/1/17 20:59:54 网站建设