热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

异常和成员内部类

异常和内部类前言一、异常1.异常2.避免异常的两种方式3.异常的基本语法1.使用try..catch处理异常2.使用多个catch块3.使用异常的共同父类Exception来捕获异


异常和内部类

  • 前言
  • 一、异常
    • 1.异常
    • 2.避免异常的两种方式
    • 3.异常的基本语法
      • 1.使用try..catch处理异常
      • 2.使用多个catch块
      • 3.使用异常的共同父类Exception来捕获异常
      • 4.关于异常的错误输出
      • 5.关于finally代码块-无论是否产生异常,都会执行的代码块
      • 6.关于异常返回值问题
      • 7.关于异常的调用链
      • 8.JDK新增的自动关闭接口
      • 9.一组关键字throws、throw
  • 二、内部类
    • 1.分类
    • 2.成员内部类
    • 3.内部类使用方法\规则




前言





一、异常

运行时抛出的程序错误
编译出错不属于此处所说的异常


1.异常

在这里插入图片描述
运行时指的是已经编译通过得到class文件,再由JVM执行过程中出现的错误
在这里插入图片描述


2.避免异常的两种方式

在这里插入图片描述


3.异常的基本语法

在这里插入图片描述


1.使用try…catch处理异常

在这里插入图片描述


2.使用多个catch块

在这里插入图片描述


3.使用异常的共同父类Exception来捕获异常

在这里插入图片描述


4.关于异常的错误输出

在这里插入图片描述


5.关于finally代码块-无论是否产生异常,都会执行的代码块

在这里插入图片描述


6.关于异常返回值问题

在这里插入图片描述


7.关于异常的调用链

在这里插入图片描述


8.JDK新增的自动关闭接口

在这里插入图片描述


9.一组关键字throws、throw

在这里插入图片描述
在这里插入图片描述

package Exception;
import book_management.user.User;
import java.util.Scanner;public class Login {public static final String USER = "WANG";public static final String PASSWORD = "123";public static void main(String[] args) {try {login();System.out.println("登陆成功");}catch (UserNameException e){e.printStackTrace();}catch (PasswordException e){e.printStackTrace();}}public static void login() throws UserNameException{Scanner scanner = new Scanner(System.in);System.out.println("请输入用户名");String name = scanner.next();System.out.println("请输入密码");String password = scanner.next();if (!name.equals(USER)) {//抛出用户异常throw new UserNameException("用户名错误");}if (!password.equals(PASSWORD)) {//抛出密码错误异常throw new PasswordException("密码 错误");}}
}//用户名异常
class UserNameException extends Exception{public UserNameException(String msg){super(msg);}
}
//密码异常
class PasswordException extends RuntimeException{public PasswordException(String msg){super(msg);}
}

二、内部类

内部类:就是将类结构的定义套在另一个类的内部


1.分类

在这里插入图片描述


2.成员内部类

在这里插入图片描述


3.内部类使用方法\规则

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


推荐阅读
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 蓝桥竞赛中的回形取数问题是一个经典的算法挑战。本文详细解析了该问题的正确实现代码,重点探讨了 `hasNext()` 和 `next()` 方法的区别与应用。尽管两者在功能上类似,都会等待用户输入下一个字符,但它们的返回值类型不同,`hasNext()` 返回一个布尔值,表示是否还有输入,而 `next()` 则直接返回下一个输入的值。通过具体的代码示例和详细的逻辑分析,本文为参赛者提供了宝贵的参考和指导。 ... [详细]
  • 开发日志:201521044091 《Java编程基础》第11周学习心得与总结
    开发日志:201521044091 《Java编程基础》第11周学习心得与总结 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文详细介绍了267 Collections的特性和应用场景。作为Java集合框架中的核心接口,Collection接口是所有单列集合类的顶级接口,涵盖了列表、集合和队列等数据结构。通过具体的应用实例,本文深入解析了Collection接口的各种方法和功能,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 在Java编程中,`String`对象既可以用作对象,也可以用作基本类型。本文深入解析了`String`对象中`equals`方法与`==`运算符的区别及其应用场景。`equals`方法用于比较两个字符串的内容是否相同,而`==`运算符则用于比较两个字符串对象的引用是否相同。通过具体示例和代码片段,文章详细阐述了这两种比较方式的内在机制和适用场景,帮助开发者更好地理解和使用`String`对象的比较操作。 ... [详细]
  • 本文深入解析了Java面向对象编程的核心概念及其应用,重点探讨了面向对象的三大特性:封装、继承和多态。封装确保了数据的安全性和代码的可维护性;继承支持代码的重用和扩展;多态则增强了程序的灵活性和可扩展性。通过具体示例,文章详细阐述了这些特性在实际开发中的应用和优势。 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 在本节课程中,我们将深入探讨 JSP 编程中的实际案例,通过具体代码示例 `code316.java` 来解析数据库连接的实现。该示例展示了如何使用 Java 的 JDBC API 进行数据库操作,包括加载数据库驱动、建立连接等关键步骤。通过本课程的学习,读者将能够更好地理解和应用 JSP 中的数据库连接技术。 ... [详细]
author-avatar
水平蓝精灵天堂_678
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有