花几千上万学习Java,真没必要!(三十)

异常:

测试测试代码1:

package catchtest.com;
public class TryCatchExample {  //使用一个或多个 catch 块捕获并处理异常。public static void main(String[] args) {  try {  // 尝试执行的代码块  int result = 10 / 0; // 引发 ArithmeticException  System.out.println("Result: " + result);  } catch (ArithmeticException e) {  // 捕获 ArithmeticException 并处理  System.out.println("捕获到算术异常: " + e.getMessage());  } catch (Exception e) {  // 捕获所有其他类型的异常  // 在实际应用中,通常不建议这样捕获所有异常,它会隐藏一些问题。  System.out.println("捕获到异常: " + e.getMessage());  } finally {  // finally 块,无论是否捕获到异常,都会执行  // 常用于关闭资源,如文件、数据库连接等  System.out.println("finally 块执行了");  }  // try-catch 之后的代码会继续执行,除非在 try 或 catch 块中显式地中断(如使用 return、throw 或 System.exit())  System.out.println("程序继续执行...");  }  
}

测试代码2:

package catchtest.com;
public class ThrowableDemo {// Throwable 类是所有错误和异常的超类。// getMessage():获取异常的详细消息字符串。// toString():获取异常的简短描述字符串。// printStackTrace():打印异常的堆栈跟踪到标准错误流。// getCause() 和 initCause(Throwable cause):这个例子没有使用// initCause()(因为它在异常被抛出后不能被再次设置),但展示了如何检查异常的 cause(如果存在)。// initCause(Throwable cause) 方法通常用于在创建异常对象时设置其原因。// 一旦异常被抛出,其 cause 就不能再被更改。如果尝试在异常被抛出后调用 initCause(),将抛出 IllegalStateException。public static void main(String[] args) {// 创建一个自定义异常,并传递一个消息MyCustomException myException = new MyCustomException("这是一个自定义异常");try {// 抛出一个异常。throw myException;} catch (MyCustomException e) {// 使用Throwable的成员方法System.out.println("异常消息: " + e.getMessage());System.out.println("异常的字符串表示: " + e.toString());e.printStackTrace(); // 打印异常的堆栈跟踪到标准错误流// 假设这个异常是由另一个异常引起的Throwable cause = new Throwable("这是引起异常的原因");// 一旦异常被抛出,它的cause就不能再被设置// 在实际场景中,应该在创建异常对象时设置cause// e.initCause(cause); //// 抛出IllegalStateException,因为cause已经被设置了(默认是null,但一旦设置就不能再改)// 但是,我们可以检查并打印cause(如果它存在)if (e.getCause() != null) {System.out.println("异常的原因: " + e.getCause().getMessage());} else {System.out.println("此异常没有直接的原因。");}// 没有为myException设置cause,所以getCause()返回null}}// 定义一个自定义异常类static class MyCustomException extends Exception {public MyCustomException(String message) {super(message); // 调用父类的构造器来设置消息}// 根据需要添加其他构造器或方法}
}

测试代码3:

package catchtest.com;
public class ThrowsDemo {  // 自定义一个编译时异常  static class MyCheckedException extends Exception {  public MyCheckedException(String message) {  super(message);  }  }  // 声明一个可能会抛出MyCheckedException的方法  public static void mightThrowException() throws MyCheckedException {  // 假设这里有一些可能抛出MyCheckedException的代码  // 直接抛出一个异常  throw new MyCheckedException("这是一个可能发生的异常");  }  public static void main(String[] args) {  try {  // 调用mightThrowException方法,捕获抛出的MyCheckedException  mightThrowException();  } catch (MyCheckedException e) {  // 处理异常  System.out.println("捕获到异常: " + e.getMessage());  }  // 如果不捕获异常,并且方法签名中没有使用throws声明异常,编译器会报错  // 下面的这行代码如果取消注释,会导致编译错误  // mightThrowException(); // 编译错误:Unhandled exception: MyCheckedException  }  // 运行时异常(RuntimeException及其子类),即使不使用throws声明,  // 也可以在方法内部抛出,并且调用者可以选择捕获或不捕获这些异常。  // 编译时异常(即Exception及其非RuntimeException的子类),  // 如果方法内部抛出了这些异常,并且没有在方法内部捕获它们,  // 就必须在方法签名中使用throws关键字声明这些异常,  // 或者在方法内部使用try-catch块捕获并处理它们。  
}

自定义异常:

创建一个编译时异常类:

package catchtest.com;
//自定义编译时异常
public class MyCustomCheckedException extends Exception {  // 构造函数,可以有多个,根据需要定义  public MyCustomCheckedException() {  // 调用父类的无参构造方法 super();  }  public MyCustomCheckedException(String message) {  // 调用父类的带有详细信息的构造方法 super(message);  }  // 根据需要添加其他构造方法、方法和属性  
}

 创建一个运行时异常类:

package catchtest.com;
//自定义运行时异常
public class MyCustomRuntimeException extends RuntimeException {  // 构造函数,可以有多个,根据需要定义  public MyCustomRuntimeException() {  // 调用父类的无参构造方法  super();  }  public MyCustomRuntimeException(String message) {  // 调用父类的带有详细信息的构造方法  super(message);  }  // 根据需要添加其他构造方法、方法和属性  
}

在Main方法中测试: 

package catchtest.com;
public class TestException {  // 抛出自定义编译时异常的方法  public static void mightThrowCheckedException() throws MyCustomCheckedException {  // 抛出MyCustomCheckedException  throw new MyCustomCheckedException("这是一个自定义的编译时异常");  }  // 抛出自定义运行时异常的方法  public static void mightThrowRuntimeException() {  // 抛出MyCustomRuntimeException  throw new MyCustomRuntimeException("这是一个自定义的运行时异常");  }  public static void main(String[] args) {  try {  // 调用可能会抛出编译时异常的方法,并捕获该异常  mightThrowCheckedException();  } catch (MyCustomCheckedException e) {  System.out.println("捕获到自定义编译时异常: " + e.getMessage());  }  // 调用可能会抛出运行时异常的方法  // 运行时异常不需要在编译时被强制捕获或声明抛出  try {  mightThrowRuntimeException();  } catch (MyCustomRuntimeException e) {  // 捕获并处理自定义运行时异常 System.out.println("捕获到自定义运行时异常: " + e.getMessage());  }  // 如果不捕获自定义运行时异常,它将按照Java的异常处理机制被传播  // 导致程序终止并打印堆栈跟踪  mightThrowRuntimeException(); // 直接打印堆栈跟踪,因为异常没有被捕获  }  
}

运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3269208.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

AI如何助力UI设计师互联网学习?

嘿,咱 UI 设计师想用互联网学习,可真不容易!资料筛选难,学习资源杂,真让人头疼。不过还好有 AI 工具能帮忙,提效率! 这一年多来,我在 ai123.cn 这个平台上,可算是找到了…

【LeetCode、牛客】链表分割、链表的回文结构、160.相交链表

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构 📚本系列文章为个人学…

Web网页端IM产品RainbowChat-Web的v7.1版已发布

一、关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIMSDK (Github地址) 的产品级移动端IM系统)。 ► 详细介绍:http://www.52im.net/thread-2…

WEB前端11-Vue2基础01(项目构建/目录解析/基础案例)

Vue2基础(01) 1.Vue2项目构建 步骤一:安装前端脚手架 npm install -g vue/cli步骤二:创建项目 vue ui步骤三:运行项目 npm run serve步骤四:修改vue相关的属性 DevServer | webpack //修改端口和添加代理 const { defineCo…

AccessLog| 一款开源的日志分析系统

前言 ClkLog作为分析系列产品中的前端数据分析系统,通过采集前端应用数据进行用户行为分析。其社区版从23年9月发布至今已有近一年,商业版也上线快半年,感谢大家一直以来的关注和支持,ClkLog会继续做好产品升级与服务,…

中小企业提升销售效率的10款CRM系统

本文介绍了10款CRM系统:纷享销客、Zoho CRM、Apptivo、简信CRM、浪潮CRM、HubSpot CRM、八百客、简道云、Pipedrive、Insightly。 在选择CRM系统时,中小企业常常面临着预算限制和功能需求之间的矛盾,许多企业希望找到既经济实惠又功能强大的解…

重生之“我打数据结构,真的假的?”--3.栈和队列

1.栈和队列的基本概念 1.1 栈 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则…

深度剖析:品牌推广中的专业外包服务商策略

回顾历史,从农业革命到工业革命,再到如今的信息技术革命,每一次社会生产力的飞跃都伴随着分工的细化和专业化的提升。亚当斯密在《国富论》中提出的“分工论”早已揭示了这一真理:通过分工,每个人专注于自己擅长的领域…

计算机网络(Wrong Question)

一、计算机网络体系结构 1.1 计算机网络概述 D 注:计算机的三大主要功能是数据通信、资源共享、分布式处理。(负载均衡、提高可靠性) 注:几段链路就是几段流水。 C 注:记住一个基本计算公式:若n个分组&a…

昇思25天学习打卡营第01天|昇思MindSpore大模型基础j介绍

昇思MindSpore和华为昇思MindSpore大模型学习打卡系列文章,本文仅供参考~ 文章目录 前言一、昇思MindSpore是什么?二、执行流程三、设计理念四、层次结构五、Huawei昇腾AI全栈 前言 随着计算机大模型的不断发展,Ai这门技术也越来越重要&#…

HarmonyOS 自定义节点

1. HarmonyOS 自定义节点 1.1. 概念 官方文档(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-user-defined-capabilities-V5)   自定义能力是HarmonyOS ArkUI开发框架提供的对UI界面进行开发和设计的能力。现有的自定义…

数模打怪(八)之图论模型

一、作图 图的数学语言描述: G( V(G), E(G) ),G(graph):图,V(vertex):顶点集,E(edge):边集 1、在线作图 https://csac…

《牛角型电解电容和螺栓型电解电容》

牛角型电解电容之所以被称为牛角型,是因为引出端子的形状类似牛角。 螺栓型电解电容被称为螺栓型,是因为其引出端子的形状像螺栓。 牛角型电解电容和螺栓型电解电容,虽然也是电容,但在普通电路板上用的很少,更多是安…

Linux网络-wget命令

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注我,我尽量把自己会的都分享给大家,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux服务器作为一个常用的网络服务器,主要的作用就是向客户端提供网络…

学习测试11-移动自动化(略)

安卓SDK 链接: https://pan.baidu.com/s/1P4v9K2RYAGEoA5M_93hHlQ?pwdqsbu 提取码: qsbu 复制这段内容后打开百度网盘手机App,操作更方便哦 记得配置环境变量 下载Appium软件 hub网址:https://github.com/appium/appium-desktop/releases 链接: https…

【Node.js入门精要】从零开始的开发之旅

说明文档:Node.js 教程_w3cschool 概念 Node.js 是一个开源、跨平台的 JavaScript 运行时环境,基于 Chrome 的 V8 引擎构建,专为构建高性能和可扩展的网络应用程序而设计的服务端语言。它采用事件驱动、非阻塞 I/O 模型,能够处理大…

【Django】前端技术HTML常用标签(开发环境vscode)

文章目录 安装两个常用插件HTML常用标签定义文档类型DOCTYPE网页的结构html/head//title/body/div标题h1/h2/h3/h4/h5分割线hr段落 p列表ul/li,ol/li超链接a文本span图片img按钮button表格table(table、tr、th、td)表单form 安装两个常用插件…

学习大数据DAY25 Shell脚本的书写2与Shell工具的使用

目录 自定义函数 递归-自己调用自己 上机练习 12 Shell 工具 sort sed awk 上机练习 13 自定义函数 name(){ action; } function name { Action; } name 因为 shell 脚本是从上到下逐行运行,不会像其它语言一样先编译,所以函数必 须在调…

React Router-v6.25.1

以下例子是根据vitereactts构建的,使用路由前先安装好这些环境!!!! 1、路由的简单使用 首先要创建一个浏览器路由器并配置我们的第一个路由。这将为我们的 Web 应用启用客户端路由。 该main.jsx文件是入口点。打开它…

前端知识--前端访问后端技术Ajax及框架Axios

一、异步数据请求技术----Ajax Ajax是前端访问后端的技术,为异步请求(不刷新页面,请求数据,只更新局部数据)。 例如:在京东网站中搜索电脑,就会出现一些联想搜索,但此时页面并没有…