java编程思想随笔(四)/违例简单使用

避开地图定位的坑:手把手教你处理GCJ-02和WGS-84坐标转换(2023最新版) 本文深入解析了GCJ-02与WGS-84坐标系转换的核心原理与常见误区,提供了详细的代码实现与精度控制方法。针对地图定位开发中的实际痛点,文章重点阐述了如何通过迭代逼近法实现高精度坐标转换,并给出了误差测试与业务场景下的工程实践指南,帮助开发者有效规避定位漂移等问题。 阅读详情

 创建自己的违例,以便指出自己的库可能生成的一个特殊错误。为创建自己的违例类,必须从一个现有的违例类型继承,如下:

class MyException extends Exception {
    public MyException() {}
    public MyException(String msg) {
        super(msg);
    }
}
public class Inheriting {
    public static void f() throws MyException {
        System.out.println("Throwing MyException from f()");
        throw new MyException();
    }
    public static void g() throws MyException {
        System.out.println("Throwing MyException from g()");
        throw new MyException("Originated in g()");
    }
    public static void main(String[] args) {
        try {
            f();
        } catch(MyException e) {
            e.printStackTrace();
        }
        try {
            g();
        } catch(MyException e) {
            e.printStackTrace();
        }
    }
}

这里的关键是“extends Exception”,它的意思是:除 Exception 的全部含义以外,还有更多的含义(功能,方法)。

增加的代码数量非常少——实际只添加了两个构建器,对 MyException的创建方式进行了定义。在第二个构建器中,通过使用super 关键字,调用了一个带 String参数的基础类(父类)构建器。

该程序输出结果如下:

Throwing MyException from f()
MyException
    at Inheriting.f(Inheriting.java:16)
    at Inheriting.main(Inheriting.java:24)
Throwing MyException from g()
MyException: Originated in g()
    at Inheriting.g(Inheriting.java:20)
    at Inheriting.main(Inheriting.java:29)

进一步使用如下:

class MyException2 extends Exception {
    public MyException2() {}
    public MyException2(String msg) {
        super(msg);
    }
    public MyException2(String msg, int x) {
        super(msg);
        i = x;
    }
    public int val() { return i; }
    private int i;
}
public class Inheriting2 {
    public static void f() throws MyException2 {
        System.out.println("Throwing MyException2 from f()");
        throw new MyException2();
    }
    public static void g() throws MyException2 {
        System.out.println("Throwing MyException2 from g()");
        throw new MyException2("Originated in g()");
    }
    public static void h() throws MyException2 {
        System.out.println("Throwing MyException2 from h()");
        throw new MyException2("Originated in h()", 47);
    }
    public static void main(String[] args) {
        try {
            f();
        } catch(MyException2 e) {
            e.printStackTrace();
        }
        try {
            g();
        } catch(MyException2 e) {
            e.printStackTrace();
        }
        try {
            h();
        } catch(MyException2 e) {
            e.printStackTrace();
            System.out.println("e.val() = " + e.val());
        }
    }
}

输出结果如下:

Throwing MyException2 from f()
MyException2
    at Inheriting2.f(Inheriting2.java:22)
    at Inheriting2.main(Inheriting2.java:34)
Throwing MyException2 from g()
MyException2: Originated in g()
    at Inheriting2.g(Inheriting2.java:26)
    at Inheriting2.main(Inheriting2.java:39)
Throwing MyException2 from h()
MyException2: Originated in h()
    at Inheriting2.h(Inheriting2.java:30)
    at Inheriting2.main(Inheriting2.java:44)
e.val() = 47

由于违例不过是另一种形式的对象,所以可以继续执行,进一步增强违例类的能力。

违例准则:

用违例做下面这些事情:
(1) 解决问题并再次调用造成违例的方法。
(2) 平息事态的发展,并在不重新尝试方法的前提下继续。
(3) 计算另一些结果,而不是希望方法产生的结果。
(4) 在当前环境中尽可能解决问题,以及将相同的违例重新“掷”出一个更高级的环境。
(5) 在当前环境中尽可能解决问题,以及将不同的违例重新“掷”出一个更高级的环境。
(6) 中止程序执行。
(7) 简化编码。若违例方案使事情变得更加复杂,那就会令人非常烦恼,不如不用。
(8) 使自己的库和程序变得更加安全。这既是一种“短期投资”(便于调试),也是一种“长期投资”(改

善应用程序的健壮性)

常见违例:

空指针异常类:NullPointerException
数组下标越界异常:ArrayIndexOutOfBoundsException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException

方法未找到异常:NoSuchMethodException

java.lang.ClassFormatError
类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。

java.lang.ExceptionInInitializerError
初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。

java.lang.IllegalAccessError
违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。

java.lang.InstantiationError
实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.

java.lang.NoClassDefFoundError
未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。

java.lang.OutOfMemoryError
内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。

java.lang.StackOverflowError
堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。

java.lang.ThreadDeath
线程结束。当调用Thread类的stop方法时抛出该错误,用于指示线程结束。

java.lang.UnknownError
未知错误。用于指示Java虚拟机发生了未知严重错误的情况。

java.lang.ArithmeticException
算术条件异常。如:整数除零等。

java.lang.ClassCastException
类造型异常。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。

java.lang.ClassNotFoundException
找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。

java.lang.IllegalAccessException
违法的访问异常。当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。

java.lang.IndexOutOfBoundsException
索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。

java.lang.InstantiationException
实例化异常。当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。

java.lang.RuntimeException
运行时异常。是所有Java虚拟机正常操作期间可以被抛出的异常的父类。
【异常】OpenClaw 项目 `fetch failed` 报错问题排查与解决方案Response interrupted: TypeError: fetch failed 针对无超时控制、异常兜底缺失导致的请求中断,封装标准化的安全请求工具,一次性解决超时控制、异常捕获、日志埋点三大问题,全项目替换原生。:将项目运行的 Node.js 版本升级至 18.x 及以上 LTS 版本,使用 Node.js 内置的稳定版。实现的网络请求环节,包括但不限于:第三方开放接口调用、内部服务接口通信、跨域资源请求、外部配置拉取等场景。:针对无法升级 Node.js 版本的存量环境,通过社区稳定兼容包替换原生。类型异常,直接造成业务请求响应中断。第二步:业务代码改造,替换原生。 阅读详情

相关推荐

《揭秘 BME688人工智能压力湿度温度气体传感器:气体检测的多面能手》:此文为AI自动生成

BME688 是博世推出的一款具有人工智能和集成高线性度高精度压力、湿度、温度传感器的气体传感器,专为移动和联网应用开发,尺寸紧凑且低功耗。BME688 作为一款先进的传感器,在多个领域展现出卓越的性能。它采用了坚固而紧凑的 3.0 x 3.0 x 0.9 mm³ 封装,这种小巧的尺寸使其能够轻松应用于对空间要求严格的移动设备和联网应用中。同时,低功耗的特性也使得它在能源有限的环境下能够长时间稳定运行。

zheng_ruiguo的专栏 1931

递归低效以及java.lang.StackOverflowError原因

现象 : 递归是我们很经典的一种算法实现,可以很好的描述一个算法的原理!对于算法的描述、表现和代码结构理解上,递归都是不错的选择! 但是本文想说的是java实现一个递归算法的时候尽量不要用递归实现,而是转换成的非递归实现。 最近在实现一个比较复杂算法的时候,尝试了一下,非递归实现相比递归实现速度上能提升1/3。 以下面一个简单的例子来说: (注:为了描述简单,所以这里

新旧问题集 7643

手把手教你设计MTBF加速寿命试验:从阿伦尼斯模型到卡方计算(含Excel模板)

本文详细介绍了如何设计MTBF加速寿命试验,从阿伦尼斯模型到卡方计算,帮助工程师在合理时间内获得准确的MTBF数据。通过工业电源模块的实例演示,涵盖活化能确定、温度应力设计、样本量计算及数据记录规范,并提供Excel模板实现自动化计算,显著提升测试效率。

weixin_42563415的博客 540

java/Android内存泄漏和内存溢出详解

java/Android内存泄漏和内存溢出详解java内存泄漏和溢出跟内存栈堆也是有一些关系,这里不解释! 这里主要讲解一下内存泄漏和溢出的区别和联系。 之前我跟别人说这两个的区别就说了:内存泄漏是因为内存对象一直被占有没有释放,而内存泄漏严重就会导致内存溢出。 其实上面这个解释听起来有一些道理,但是不怎么正确,下面跟大家在详细解释一下:一.内存泄漏和内存溢出的定义1.内存泄露 memory

wenzhi的博客 4752

Keil v5.11给STM32烧录程序记录

1)安装KeilMDK511 2)安装ST Link下载器驱动 3)打开Keil v5,加载工程文件 4)load pack(Keil.STM32F1xx_DFP.1.1.0和Keil.STM32F0xx_DFP.1.2.0) 5)编译程序- 0 Error(s), 0 Warning(s). 6)烧录程序 ...

守望的距离 6281

计算蛋白质结构中氨基酸之间的方向和方位

方向 (Direction):通过相邻氨基酸的 CαCα​ 原子坐标差值,得到方向向量,描述两个氨基酸之间的几何方向。方位 (Orientation):可以通过二面角(如 Psi)来表示相邻氨基酸之间的旋转关系,或者通过局部坐标系(基于 NN、CαCα​、CC 原子)描述残基的空间取向。这些计算是研究蛋白质结构动力学、折叠过程、以及相互作用的基础,尤其是在使用机器学习和深度学习模型进行蛋白质结构预测时,这些几何信息有助于更好地捕捉残基之间的空间关系。

qq_27390023的博客 1680

Execption

javax.servlet包加载不了 右键点击你的工程,弹出属性设置列表:Build Path->Add Libraries…,弹出添加类库对话框,选择Server Runtime,点击Next按钮,选择web服务器(前提是配置了Web服务器,例如Tomcat),点击Finish即可。 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强

拓扑 890

IEEE S&P 2026 大模型安全论文整理

本文梳理了 IEEE S&P 2026(第47届 IEEE 安全与隐私研讨会)中与 LLM Safety 相关的论文,涵盖大模型越狱攻击、防御与对齐、隐私保护、RAG 安全、多模态大模型安全、智能体安全、图-LLM 安全、工具链安全及生成式 AI 安全与隐私等方向。

CSPhD-winston的博客 1335

java.lang.StackOverflowError

刷题时出现一个Java.lang.StackOverflowError异常。弄了半天,又是问高手,又是查资料的。最后发现,解决问题啦!特记录下来! StackOverflowError是由于当前线程的栈满了  ,也就是函数调用层级过多导致。 比如死递归。

skyxmstar的博客 773

YOLO11检测中的内存占用分析与优化:讲解如何分析并优化推理时的内存使用

YOLOv11模型内存分析与优化摘要:本文系统分析了YOLOv11目标检测模型的内存使用模式,重点探讨了显存(VRAM)、系统内存(RAM)和共享内存的特性差异。通过PyTorch内置工具和自定义分析器,详细剖析了骨干网络、颈部网络和检测头各组件内存占用规律,指出激活值内存与输入尺寸呈平方级增长关系。文章提供了卷积层内存计算公式,并强调合理规划"工作台"(显存)与"仓库"(内存)间的数据流动是优化关键。最后通过流程图直观展示了YOLOv11推理过程的三类内存使用模式,

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 343

机器学习实战——疫情数据分析与预测

机器学习如何做到疫情可视化——疫情数据分析与预测实战 本文将带领大家爬取11个国家以及中国31个省(自治区、直辖市)在2022.0101-2022.06.19的新冠疫情数据。并且采用机器学习模型对2022.6.20-2022.6.30每一天的全国确诊人数、死亡人数、治愈人数进行预测,**做出疫情可视化图形并且求出最终的相关系数R2!...

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 10万+

java异常例子解析及常见的异常类型

六种异常处理的陋习    你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?         1 OutputStreamWriter out = ...   2 java.sql.Connection conn = ...   3 try { // ⑸   4  Statement stat = conn.cr

fengoh的专栏 6817

华为OD机试真题 新系统 9月16号 【园区基站节能部署规划】

华为OD机试真题 新系统【园区基站节能部署规划】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【园区基站节能部署规划】多语言题解。

qq_45776114的博客 356

java自动违例设计,Java违例控制,java违例

前言本文主要讨论Java中的违例控制,包括以下内容:1)什么是违例控制2)违例的概念3)Java中违例的类层次结构4)如何掷出和捕获违例5)捕获以后如何处理违例本文将通过深入以上细节,向你完整地展现Java中违例的全貌,使得你能够在以后的程序编写中得心应手地处理各种可能遭遇的情况。什么是违例控制简单地说,违例控制就是在程序中提供给你这样一种能力:1)监视程序中的异常情况2)当异常情况发生时,将控制...

weixin_33265107的博客 168

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

24.JAVA编程思想——违例差错控制

24.JAVA编程思想——违例差错控制 Java 的基本原理就是“形式错误的代码不会运行”。 与C++类似,捕获错误最理想的是在编译期间,最好在试图运行程序以前。然而,并非所有错误都能在编译期间侦测到。有些问题必须在运行期间解决,让错误的缔结者通过一些手续向接收者传递一些适当的信息,使其知道该如何正确地处理遇到的问题。 在C++和其他早期语言中,可通过几种手续来达到这个目的。而且它们通常是作

badman250的专栏 3万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

30.JAVA编程思想——违例匹配

30.JAVA编程思想——违例匹配 “掷”出一个违例后,违例控制系统会按当初编写的顺序搜索“最接近”的控制器。一旦找到相符的控制器,就认为违例已得到控制,不再进行更多的搜索工作。 在违例和它的控制器之间,并不需要非常精确的匹配。一个衍生类对象可与基础类的一个控制器相配,如下 1     代码 class Annoyance extends Exception { } class S

badman250的专栏 3万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

27.JAVA编程思想——违例的限制

27.JAVA编程思想——违例的限制 覆盖一个方法时,只能产生已在方法的基础类版本中定义的违例。这是一个重要的限制,因为它意味着与基础类协同工作的代码也会自动应用于从基础类衍生的任何对象(当然,这属于基本的OOP 概念),其中包括违例。 下面这个例子演示了强加在违例身上的限制类型(在编译期): 1     代码如下 class BaseballException extends Exce

badman250的专栏 3万+

java自动违例设计,Java违例控制总结

Java违例控制总结本文主要讨论Java中的违例控制,包括以下内容:1)什么是违例控制2)违例的概念3)Java中违例的类层次结构4)如何掷出和捕获违例5)捕获以后如何处理违例本文将通过深入以上细节,向你完整地展现Java中违例的全貌,使得你能够在以后的程序编写中得心应手地处理各种可能遭遇的情况。什么是违例控制简单地说,违例控制就是在程序中提供给你这样一种能力:1)监视程序中的异常情况2)当异常情...

weixin_30100295的博客 181

巨著《Java 编程思想》新版终于来啦

老版《Java编程思想》(原书名《Thinking in Java》)得益作者开放深度研讨的创作方式,受到了全世界读者的追捧,被译为了十几种语言。但遗憾的是,在经历了 4 个版本的更新后,其最后一版发布于 2007 年,之后再无更新。直至 Java 8 发布,随着大量新特性的发布,原书作者 Bruce Eckel 觉得很有必要重塑这本经典的《Java编程思想》,于是重新动笔完成了最新版本《On Java》, 一经发布就得到了读者的高度关注。

hacker707的博客 2万+

JAVA编程思想学习 — 第九章 (违例差错控制)

1.违例自变量     和 Java 的其他任何对象一样,需要用 new 在内存堆里创建违例,并需调用一个构建器。在所有标准违例中,存在着两个构建器:第一个是默认构建器,第二个则需使用一个字串自变量,使我们能在违例里置入相关信息:     if(t == null)     throw new NullPointerException("t = null”);     在这儿,关键字 th

叶孤心的专栏 549

24 JAVA编程思想——违例差错控制

24 JAVA编程思想——违例差错控制

ugghhj的博客 155

25.JAVA编程思想——标准Java违例

25.JAVA编程思想——标准Java违例 Java 包含了一个名为Throwable的类,它对可以作为违例“掷”出的所有东西进行了描述。Throwable 对象有两种常规类型(亦即“从Throwable 继承”)。其中,Error 代表编译期和系统错误,我们一般不必特意捕获它们(除在特殊情况以外)。Exception 是可以从任何标准Java 库的类方法中“掷”出的基本类型。此外,它们亦可从我

badman250的专栏 3万+

Java--违例控制(异常处理)

违例发生时Java处理过程: 首先,创建违例对象:在内存“堆” 里,用new来创建。 随后,停止当前执行路径(记住不可沿这条路径继续下去),然后从当前的环境中释放出违例对象的句柄。 此时,违例控制机制会接管一切,并开始查找一个恰当的地方,用于继续程序的执行。这个恰当的地方便是“...

霍淇滨的博客 215

读《Java编程思想第五版》心得体会

???? Java学习路线:搬砖工逆袭Java架构师 ???? 简介:Java领域优质创作者????、优快云哪吒公众号作者✌ 、Java架构师奋斗者 ???? 扫描主页左侧二维码,加入群聊,一起学习、一起进步 ???? 欢迎点赞 ???? 收藏 ⭐留言 ???? 一、On Java 8横空出世 很荣幸受到图灵图书邀请,首批阅读了Bruce Eckel 的新作 On Java 8。Bruce Eckel是《Thinking in Java》的作者,《Thinking in Java》被评为19

学Java,找哪吒 9900

Java违例控制 总结

Java违例控制 总结Java违例控制 本文主要讨论Java中的违例控制,包括以下内容:1)什么是违例控制2)违例的概念3)Java中违例的类层次结构4)如何掷出和捕获违例5)捕获以后如何处理违例本文将通过深入以上细节,向你完整地展现Java中违例的全貌,使得你能够在以后的程序编写中得心应手地处理各种可能遭遇的情况。什么是违例控制简单地说,违例控制就是在程序中提供给你这样一种能力:1)监视程序中的

huhpreal的专栏 992

Java违例控制总结

Java违例控制总结本文主要讨论Java中的违例控制,包括以下内容:1)什么是违例控制2)违例的概念3)Java中违例的类层次结构4)如何掷出和捕获违例5)捕获以后如何处理违例本文将通过深入以上细节,向你完整地展现Java中违例的全貌,使得你能够在以后的程序编写中得心应手地处理各种可能遭遇的情况。什么是违例控制简单地说,违例控制就是在程序中提供给你这样一种能力:1)监视程序中的异常情况2)当异常情

CodingMouse的专栏 839
上一篇: java编程思想随笔(三)/访问指示符和package和import
下一篇: java多线程初探(一)构建线程安全类
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值