自学内容网 自学内容网

Java高频面试之SE-16

hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶

Java中异常的处理方式有哪些?

在 Java 中,异常的处理方式主要有以下几种:

1. 使用 try-catch 语句

try-catch 结构是 Java 异常处理的基本方式。可以将可能抛出异常的代码放在 try 块中,并在 catch 块中处理这些异常。

try {
    // 可能抛出异常的代码
} catch (ExceptionType e) {
    // 处理异常
}

可以有多个 catch 块来捕获不同类型的异常。

try {
    // 可能抛出异常的代码
} catch (IOException e) {
    // 处理 IO 异常
} catch (SQLException e) {
    // 处理 SQL 异常
} catch (Exception e) {
    // 处理其他异常
}

2. 使用 finally

finally 块用于放置无论如何都会执行的代码,通常用于释放资源,比如关闭文件流或数据库连接。

try {
    // 可能抛出异常的代码
} catch (Exception e) {
    // 处理异常
} finally {
    // 清理资源,例如关闭流或数据库连接
}

3. 使用 try-with-resources

从 Java 7 开始,try-with-resources 语法允许在声明资源的同时自动管理其关闭。这对于处理如文件流、网络连接等可关闭的资源尤为重要。

try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    // 使用 br 读取文件内容
} catch (IOException e) {
    // 处理 IO 异常
}

4. 抛出异常

使用 throw 语句可以主动抛出异常。可以抛出系统提供的异常,也可以抛出自定义异常。

throw new IllegalArgumentException("Invalid argument");

在方法声明中使用 throws 关键字指明该方法可能抛出的异常,这样调用该方法的代码就必须处理这些异常。

public void myMethod() throws IOException, SQLException {
    // 可能抛出 IO 和 SQL 异常的代码
}

5. 自定义异常

可以创建自己的异常类,以满足特定需求。自定义异常类通常继承 ExceptionRuntimeException

public class MyCustomException extends Exception {
    public MyCustomException(String message) {
        super(message);
    }
}

6. 记录异常

通过日志记录异常信息可以帮助开发者追踪问题,常用的日志记录框架有 Log4j、SLF4J 等。

try {
    // 可能抛出异常的代码
} catch (Exception e) {
    logger.error("An error occurred", e);
}

7. 创建全局异常处理机制

在大型应用中,常常需要将异常处理集中到一个地方,例如使用 Spring 的全局异常处理机制,使用 @ControllerAdvice@ExceptionHandler 注解来集中处理控制器中的异常。

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception e) {
        return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

Java中的IO流体系说一下

Java中的IO流体系是用于处理输入与输出的类库,提供了对数据的读写操作。Java的IO流体系分为几种主要的类和接口,通过这些类和接口,开发者可以进行文件操作、数据读取、字符处理等。大体上来说,Java IO流可以分为以下几种类型:

1. 字节流和字符流

  • 字节流(InputStream 和 OutputStream)
    字节流用于处理所有类型的 I/O,包括音频、视频和其他二进制数据。主要的类包括:

    • InputStream:字节输入流的抽象类。
    • OutputStream:字节输出流的抽象类。
    • 常用的子类:
      • FileInputStream:用于从文件中读取字节。
      • FileOutputStream:用于向文件中写入字节。
      • BufferedInputStream:为其他输入流提供缓冲功能,以提高效率。
      • BufferedOutputStream:为其他输出流提供缓冲功能。
  • 字符流(Reader 和 Writer)
    字符流专门用于处理字符数据。它们可以方便地处理文本文件和字符编码。主要的类包括:

    • Reader:字符输入流的抽象类。
    • Writer:字符输出流的抽象类。
    • 常用的子类:
      • FileReader:用于从文本文件中读取字符。
      • FileWriter:用于向文本文件中写入字符。
      • BufferedReader:为字符输入流提供缓冲功能,常用于按行读取文本。
      • BufferedWriter:为字符输出流提供缓冲功能。

2. 标准输入和输出

Java 提供了一种便捷的方式来处理标准输入和输出:

  • System.in:标准输入流,通常与键盘输入相关联,可以被视为一个 InputStream
  • System.out:标准输出流,通常与控制台输出相关联,可以被视为一个 OutputStream

3. 数据流

Java 提供了数据流(Data Input and Output)类,用于高效地读写基本数据类型(如 int、float、char等):

  • DataInputStream:用于从输入流中读取基本数据类型。
  • DataOutputStream:用于向输出流中写入基本数据类型。

4. 对象流

Java 的对象流(Object Input/Output)允许你序列化和反序列化 Java 对象:

  • ObjectInputStream:用于从输入流中读取对象。
  • ObjectOutputStream:用于向输出流中写入对象。
  • 序列化反序列化允许将对象的状态写入流中以在后续恢复。

5. 内存流

内存流使用内存作为输入和输出的源,与磁盘操作相对:

  • ByteArrayInputStream:用于在内存中读取字节。
  • ByteArrayOutputStream:用于在内存中写入字节。
  • CharArrayReaderCharArrayWriter:用于在内存中读取和写入字符。

6. NIO(New IO)

Java 1.4 引入了 NIO,为高效的 I/O 操作提供了更强大的功能,并支持非阻塞 I/O:

  • Channel:通道代替了传统的流,提供了双向传输的能力。
  • Buffer:用于在通道和数据源之间存储数据的容器。
  • Selectors:可以注册多个通道以处理多个输入/输出事件,从而实现非阻塞 I/O。

7. 过滤流

过滤流用于对输入和输出流进行包装,提供额外的功能,例如:

  • BufferedInputStream:在字节输入流中添加缓冲。从而提高读操作的效率。
  • BufferedOutputStream:在字节输出流中添加缓冲。
  • PrintWriter:用于字符输出,可以直接写入格式化的文本。

在这里插入图片描述

图标更换
https://pan.quark.cn/s/d366949260e9
IDEA ji huo
https://pan.quark.cn/s/4216736c0427
🎬大全
https://kdocs.cn/l/cqhxNU9I2lLD

在这里插入图片描述


原文地址:https://blog.csdn.net/2401_87189717/article/details/145311757

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!