这一章节我们来讨论一下出现异常的时候的栈轨迹和重新抛出异常。
1.栈轨迹
打印栈轨迹有两种方式:
(1)不改变原先的代码
package com.ray.ch10;
public class Test {
public static void main(String[] args) {
try {
throw new Exception("cause");
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出:
java.lang.Exception: cause
at com.ray.ch10.Test.main(Test.java:6)
(2)自定义打印方法栈轨迹
package com.ray.ch10;
public class Test {
public static void main(String[] args) {
try {
throw new Exception("cause");
} catch (Exception e) {
for (StackTraceElement element : e.getStackTrace()) {
System.out.println(element.getMethodName());
System.out.println(element.getFileName());
System.out.println(element.getClassName());
System.out.println(element.getLineNumber());
}
}
}
}
输出:
main
Test.java
com.ray.ch10.Test
6
我们对比一下两个代码块的输出,其实下面的那个输出就是上面输出的组成元素。
2.重新抛出异常。
有些时候我们不需要在某一层次来处理异常,特别是web应用主流的mvc结构,不同层级管理不同的东西,但是有些时候我不想在某层处理异常,那么我需要重新抛出异常。
package com.ray.ch10;
public class Test {
private void test() throws Exception {
try {
throw new Exception("cause");
} catch (Exception e) {
throw e;
}
}
public static void main(String[] args) {
try {
new Test().test();
} catch (Exception e) {
e.printStackTrace();
System.out.println("处理代码");
}
}
}
输出:
java.lang.Exception: cause
at com.ray.ch10.Test.test(Test.java:7)
at com.ray.ch10.Test.main(Test.java:15)
处理代码
从代码和输出那里可以看见,我虽然在test方法里面抛异常,但是我这里不管,再扔出去到上一次,main方法里面来处理。
总结:我们这一章节主要讨论了栈轨迹和重新抛出异常。
这一章节就到这里,谢谢。
-----------------------------------
目录
分享到:
相关推荐
在Java开发中,这样的库可以极大地提高开发效率,因为它封装了常见的功能,开发者可以直接使用,而无需从头编写代码。 描述中的 "mchange-commons-java-0.2.11.jar包" 是该库的主要组成部分,是一个Java归档(JAR)...
用户可以轻松地导入现有的Java项目,或者从头开始创建新的项目,包括Maven或Gradle构建系统。 3. **构建工具**:Eclipse 集成了构建工具,如Ant和Maven,使得构建和管理项目依赖变得简单。对于现代Java开发,Maven...
标题中的“api-ntrip-java-client-master.zip”是一个包含Java实现的NTRIP客户端的源代码压缩包,专门针对Android平台。NTRIP(Networked Transport of RTCM via Internet Protocol)是一种用于实时传输GPS(全球...
标签 "aip sdk" 进一步确认了这是一个与百度AIP相关的SDK,通常这样的SDK会提供一系列预先封装好的接口,使得开发者可以快速地在自己的项目中集成AI功能,而无需从头开始编写复杂的算法和模型。 在压缩包的文件名称...
Aspose.Words 是一个强大的文档处理库,专为Java开发者设计,用于创建、操作和转换各种文档格式。版本23.6是这个库的一个重要更新,它引入了对Java Development Kit (JDK) 17的支持。这意味着开发人员现在可以利用...
【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...
Java Swing是Java GUI(图形用户界面)开发的一个重要组件,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。Swing提供了丰富的组件库,允许开发者创建美观且功能丰富的交互式用户界面。在这个...
Java是一种广泛使用的面向对象的编程语言,其特点包括抽象、继承、封装和多态性。在Java笔试中,这些概念经常被考察。 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化的过程,分为过程抽象(方法)和...
在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。
《从头开始学Java》这份课程资料包含了Java编程的基础到进阶内容,旨在为初学者提供全面的学习指导。以下是对各个章节内容的详细解析: 1. **Java语言概述**:这部分通常会介绍Java的历史背景、特点和应用领域,...
【标题】:“curso-java-pildorasInf:从头开始学习Java” 这门“从头开始学习Java”的课程,源自"PillsInformática"的教育资源,旨在为初学者提供全面的Java编程知识。Java是一种广泛使用的面向对象的编程语言,由...
"java-lib"是一个与Java编程相关的资源集合,很可能包含了各种常用的Java库,这些库可以帮助开发者在进行Java开发时提高效率,解决特定问题。"java-all-lib"的标签可能表示这个压缩包包含了广泛的Java库,涵盖了多种...
Java SDK是许多软件开发中的重要组成部分,特别是在与服务器端交互时...通过学习和使用这个SDK,开发者可以迅速在自己的应用中实现稳定、可靠的即时通信功能,而无需从头构建整个通讯系统,大大节省了开发时间和资源。
在Java开发中,创建具有模糊效果的视图背景可以提升应用程序的用户体验,使其看起来更加现代和精致。"使用渲染脚本实现模糊视图背景"是一个常见的技术实践,它通常涉及到图形处理和用户界面的设计。在这个项目中,...
首先,`Spire.Doc.jar`是Spire.Doc for Java的库文件,它是一个强大的Java文档处理工具,允许开发者创建、编辑、读取和转换Microsoft Word文档(.doc和.docx格式)。通过Spire.Doc,你可以执行以下操作: 1. 创建新...
【标题】"ks-java-lib:包含 Java 的 KS 库" 提供的是一个专门为 Java 开发者设计的库,它扩展了 Java 的功能,为开发者在处理特定任务时提供了便利。这个库可能包含了丰富的类和方法,旨在简化开发过程,提高代码的...
1. **创建文档**:通过API,开发者能够从头开始构建Word文档,包括添加文本、图片、表格、形状、页眉和页脚等元素。 2. **编辑现有文档**:能够打开和修改现有的DOC或DOCX文件,进行内容替换、格式调整、页面布局...
线性表、单链表和栈是数据结构中基础且重要的概念,它们在计算机科学和软件工程中扮演着核心角色。下面将详细解释这些概念及其Java实现。 **线性表** 是一种基本的数据结构,它是由n(n>=0)个相同类型元素构成的...