JAVA 异常

windows报错

在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境

windows错误:

异常

在编程中,异常(Exception) 是指程序运行过程中发生的非预期情况或错误,这些情况会中断程序的正常执行流程。简单来说,异常就是程序“出问题”的信号,比如尝试除以零、访问不存在的文件、网络连接失败等。

异常与错误的区别

在很多语境中,“异常”和“错误”会被混用,但严格来说:

  • 错误(Error) 是一个更宽泛的概念,指任何不符合预期的情况(包括编译时错误、逻辑错误等)。

  • 异常(Exception) 通常特指 运行时发生的可被捕获和处理的错误,是程序运行中动态产生的问题。

举例说明异常与错误

  • 异常指的并 不是语法错误,语法错了,编译不通过

  • 执行 1/0 会抛出异常

  • 用户试图打开一个不存在的文件等,会抛出异常

  • 调用一个需要网络的函数,但设备断网了,函数可能抛出 NetworkError(网络异常)—— 这是异常。

特点

  1. 打断正常流程:当异常发生时,程序不会继续按原顺序执行,而是会跳转到专门处理异常的代码块。
  2. 包含错误信息:异常通常携带描述错误的信息(如错误原因、发生位置等),帮助开发者定位问题。
  3. 可被捕获和处理:通过特定语法(如 try/catch)可以捕获异常,并编写逻辑修复问题或优雅地结束程序,避免程序崩溃。

为什么需要处理异常?

没有异常处理的程序遇到错误时 可能直接崩溃,而通过捕获和处理异常:

  • 可以让程序在出错后继续运行(如网络超时后重试)。
  • 可以向用户展示友好的错误提示(而非技术堆栈信息)。
  • 可以记录错误日志,帮助开发者后续修复问题。

几乎所有现代编程语言(如 JavaScript/TypeScript、Java、Python 等)都提供了异常处理机制,核心思想都是“发现问题-捕获问题-处理问题”。

Java处理异常

为了能够及时有效地处理程序中的运行错误,Java 专门引入了 异常类。

在Java等面向对象的编程语言中,异常是一个类,产生异常就是 创建异常对象 ,并 抛出

Java处理异常的方式是 中断处理。

注意: 异常指的并 不是语法错误,语法错了,编译不通过 ,不会产生字节码文件,根本不能运行

异常分类

  1. 所有的异常都是从 Throwable 继承而来的,是所有异常的共同祖先

  2. Error 是错误,程序无法处理,如: OutOfMemoryError,内存溢出

  3. Exception 是异常,是程序本身可以处理的异常。

Exception 和 Error 的区别

Exception 是可以被处理的,而 Error 是没法处理的。

运行时异常(非检查异常)

编译时 不会检查(不报错) ,在程序 运行时 检查异常

RuntimeException 类及其子类

此类异常,一般是 程序员犯的错误,如:1/0

非运行时异常(检查异常)

在编译时 会检查,如果没有处理异常,会编译失败

Exception子类中,除了 RuntimeException(及其子类) 的所有异常

此类异常,不是程序员犯的错误,是由外部导致的错误,比如:读取的文件不存在

Throwable 的常用方法

  • public void printStackTrace()
    打印异常的详细信息,包含了异常的类型,异常的原因,还包括异常出现的位置
    在开发和调试阶段,都得使用printStackTrace。

  • public String getMessage()
    获取发生异常的原因

  • public String toString()
    获取异常的类型和异常描述信息(很少用)

例子

先运行下面的程序,程序会产生一个数组索引越界异常ArrayIndexOfBoundsException

public class ExceptionDemo {
    public static void main(String[] args) {
        int i=1/0;

        int[] arr={1,2,3};
        System.out.println(arr[4]);
    }
}

原文出处:/show_1EF4s9rzx4Uf.html