windows报错
在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境
windows错误:
异常
在编程中,异常(Exception) 是指程序运行过程中发生的非预期情况或错误,这些情况会中断程序的正常执行流程。简单来说,异常就是程序“出问题”的信号,比如尝试除以零、访问不存在的文件、网络连接失败等。
异常与错误的区别
在很多语境中,“异常”和“错误”会被混用,但严格来说:
错误(Error) 是一个更宽泛的概念,指任何不符合预期的情况(包括编译时错误、逻辑错误等)。
异常(Exception) 通常特指 运行时发生的可被捕获和处理的错误,是程序运行中动态产生的问题。
举例说明异常与错误
异常指的并 不是语法错误,语法错了,编译不通过
执行
1/0会抛出异常用户试图打开一个不存在的文件等,会抛出异常
调用一个需要网络的函数,但设备断网了,函数可能抛出
NetworkError(网络异常)—— 这是异常。
特点
- 打断正常流程:当异常发生时,程序不会继续按原顺序执行,而是会跳转到专门处理异常的代码块。
- 包含错误信息:异常通常携带描述错误的信息(如错误原因、发生位置等),帮助开发者定位问题。
- 可被捕获和处理:通过特定语法(如
try/catch)可以捕获异常,并编写逻辑修复问题或优雅地结束程序,避免程序崩溃。
为什么需要处理异常?
没有异常处理的程序遇到错误时 可能直接崩溃,而通过捕获和处理异常:
- 可以让程序在出错后继续运行(如网络超时后重试)。
- 可以向用户展示友好的错误提示(而非技术堆栈信息)。
- 可以记录错误日志,帮助开发者后续修复问题。
几乎所有现代编程语言(如 JavaScript/TypeScript、Java、Python 等)都提供了异常处理机制,核心思想都是“发现问题-捕获问题-处理问题”。
Java处理异常
为了能够及时有效地处理程序中的运行错误,Java 专门引入了 异常类。
在Java等面向对象的编程语言中,异常是一个类,产生异常就是 创建异常对象 ,并 抛出
Java处理异常的方式是 中断处理。
注意: 异常指的并 不是语法错误,语法错了,编译不通过 ,不会产生字节码文件,根本不能运行
异常分类
所有的异常都是从
Throwable继承而来的,是所有异常的共同祖先Error是错误,程序无法处理,如:OutOfMemoryError,内存溢出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]);
}
}


