内部类、类与对象的关系、异常

  • 接口里的所有定义其实都是抽象的 public abstract(默认)
  • 直接写 返回值类型 方法名(参数);
  • 写法上接口就是interface修饰的类
  • 接口都需要实现类
  • 接口中定义的量都是常量即默认public static final
  • 抽象的思维 Java架构师
  • 接口不能被实例化,接口中没有构造方法;
  • implements 可以实现多个接口中的方法

内部类

  • 内部类就是在一个类的内部定义一个类,比如,A类中定义了一个B类,那么B类相对A类来说就称为内部类,而相对B类来说就是外部类了。
  • 1.成员内部类;
  • 2.静态内部类;
  • 3.局部内部类;
  • 4.匿名内部类;

类与对象的关系

  • 类是一种抽象的数据类型,它是对某一类事物整体的描述与定义,但并不能代表某一个具体事物。
    • 动物、植物、手机、电脑.....
  • 对象是抽象概念的具体实例
    • 张三是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。
    • 能够体现出特点,展现出共能的具体的实例,而不是一个抽象的概念

异常

  • 什么是异常?

    • 软件运行过程中,可能某个模块输入不符合要求,文件不存在或者格式不对,读取数据,数据是空的,内存满了,或者硬盘满了.....
    • 以上这些异常问题,叫异常,英文是Exception,意思是例外
  • 指程序运行过程中出现的各种不期而至的各种状况,如:文件找不到,网络连接失败、非法参数.......

  • 异常发生在程序运行期间,它影响了正常的程序执行流程。

  • 分类:

    • 检查性异常:最初是用户错误引起的异常,无法预见。
    • 异常在编译时不能被简单的忽略。
    • 运行时异常:可以被程序员避免的异常,与检查性异常相反,运行时异常可以在编译时被忽略。
    • 错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。
    • 当栈溢出时一个错误就发生了。编译时查不到。
  • 异常处理框架

  • Java中把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。

  • Java API中已经定义了多种异常类,分为两大类,错误和异常。

  • NullPointerExcetion空指针异常。

  • ArrayIndexOutOfBoundsException数组下标越界异常。

  • Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。

    • VirtualMachineError虚拟机运行错误:
    • 当jvm不载继续执行操作所需内存资源的时候,将出现OutOfMenmoryError。
    • 这些异常发生时,Java虚拟机一般会选择线程终止
    • 还有发生虚拟机试图运行程序时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。
    • 这些错误是不可察的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的情况。
  • 异常处理机制

    • 抛出异常
    • 捕获异常
    • 关键字
      • try(试)、catch(捕获)、finally(最终)、thorw、thows
  • 自定义异常

    • 使用Java内置的异常类可以描述在编程时出现的大部分异常情况,除此之外,用户还可以自定义异常。
    • 用户自定义异常类,只需要继承大部分Exception类即可。
    • 在程序中使用自定义异常类,可以分为以下几个步骤
      • 1.创建自定义异常类,
      • 2.在方法中通过throw关键字抛出异常对象
      • 3.如果在当前抛出的异常的方法中处理异常,可以使用try-catch语句捕获异常并处理,
      • 否则在方法声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
      • 4.在出现异常方法的调用者中捕获并处理异常
  • 实际应用中的经验总结

    • 处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
    • 在多重catch快后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
    • 对于不确定的代码也可以加上try-catch处理潜在异常
    • 尽量去处理潜在异常,要根据不同的业务需求和异常类型去决定
    • 尽量添加finally语句去释放占用的资源
posted @   锅巴编程  阅读(142)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示