在写代码中可能出现的错误

1.编译错误

也叫语法错误,是指代码在编译阶段(代码未运行)就被编译器发现不符合编程语言的语法规则,导致编译器无法将你的源代码(如.java 文件)转换成可执行的字节码(.class 文件),这种错误编译器会提示位置。

具体的有

  • 语法格式错误:少分号、括号不匹配、花括号未闭合等;
  • 标识符错误:使用未定义的变量 / 方法、变量名拼写错误、关键字拼写错误(如class写成Class);
  • 类型不匹配:例如把字符串赋值给整型变量(int a = "12345";);
  • 访问修饰符 / 语法规则错误:例如在非静态方法外直接调用静态变量、方法参数列表格式错误等;
  • 导入 / 依赖错误:使用了未导入的类(如用ArrayList但没写import java.util.ArrayList;)。
​
public class CompileErrorExample {
    public static void main(String[] args) {
        // 错误1:变量声明后少了分号(语法格式错误)
        int num = 1
        
        // 错误2:使用了未定义的变量(标识符错误)
        System.out.println(a);  
        //此时a为定义
        
        // 错误3:关键字拼写错误
        //(if写成了If)
        If (条件) {
            业务代码块
        }
    }
}

​

解决方法:读懂错误提示、定位错误位置、按类型修正,编译器是最好的 “纠错老师”;

2.运行错误

也叫运行时异常(RuntimeException),是指代码语法完全合法,能通过编译生成.class 文件,但在实际运行过程中,因为逻辑错误、数据异常或环境问题导致程序崩溃、卡死或输出错误结果。

具体的有

  • 空指针异常:调用了null对象的方法 / 属性(如null.length()
  • 数组下标越界:访问数组时下标超出范围(如长度 3 的数组访问下标 3)
  • 算术异常:除数为 0、取模运算除数为 0 等
  • 类型转换异常:强制转换不兼容的类型(如String str = (String) new Integer(10);
  • 数字格式异常:字符串转数字失败(如Integer.parseInt("abc")
public class RuntimeErrorExample {
    public static void main(String[] args) {
        // 1. 编译通过:语法完全合法
        int[] nums = {1, 2, 3, 4, 5};
        
        // 2. 运行时错误1:数组下标越界(数组长度为3,下标最大为2,访问3超出范围)
        System.out.println(nums[5]);
        
        // 3. 运行时错误2:空指针异常(变量str为null,调用其length()方法)
        String str = null;
        System.out.println(str.length());
        
        // 4. 运行时错误3:算术异常(除数为0)
        int a = 100;
        int b = 0;
        System.out.println(a / b);
    }
}

解决方法:

  • 运行错误是 Java 程序编译通过但运行时因逻辑 / 数据问题触发的异常,由 JVM 检测并抛出;
  • 常见的运行错误包括空指针、数组越界、除数为 0 等,核心是代码逻辑不符合运行时的实际情况;
  • 排查运行错误的关键是解读异常堆栈定位错误行,通过打印变量或调试工具分析数据 / 逻辑问题。

3.逻辑错误

是指代码语法完全合法(能通过编译)、运行时不抛出任何异常(程序不崩溃),但最终输出的结果不符合你的预期。

具体的有

    1.计算错误(最常见):例如漏掉最后一项

    2.条件判断错误:访问数组时下标超出范围(如长度 3 的数组访问下标 3)

    3.赋值错误:除数为 0、取模运算除数为 0 等

​
​
public class LogicalErrorExample1 {
    public static void main(String[] args) {

        //1.计算错误
        int sum = 0;
        // 逻辑错误:循环条件写成i < 10(少加了10),预期i <= 10
        for (int i = 1; i < 10; i++) {
            sum += i;
        }
        // 输出结果:45(预期55),程序无报错但结果错误
        System.out.println("1-10累加和:" + sum);


        //2.条件错误
         int num = 4;
        // 逻辑错误:条件写成num % 2 != 0(判断奇数),预期num % 2 == 0
        if (num % 2 != 0) {
            System.out.println(num + "是偶数");
        } else {
            System.out.println(num + "是奇数");
        }
        // 输出结果:4是奇数(预期4是偶数),程序无报错但逻辑错误
    }


        //3.赋值错误
         int a = 10;
        int b = 20;
        // 逻辑错误:先把a的值赋给b,导致b的原始值丢失,后续交换失败
        b = a; 
        a = b;
        // 输出结果:a=10, b=10(预期a=20, b=10)
        System.out.println("a=" + a + ", b=" + b);
}

​

​

解决方法:

  1. 逻辑错误是 Java 程序编译、运行都正常,但结果不符合预期的错误,是三类错误中最隐蔽、最难排查的;
  2. 常见的逻辑错误包括循环条件错误、判断条件写反、变量赋值顺序错误等,核心是 “思路和代码逻辑不匹配”;
  3. 排查逻辑错误的核心方法是:打印关键变量观察值、用 IDE 调试逐行验证、编写单元测试验证结果。

4.链接错误

是介于编译错误和运行错误之间的一类特殊错误,需要理解它的定义、触发场景、常见类型以及和其他错误的区别,这是深入理解 Java 程序运行机制的重要知识点。

核心特征:

  1. 编译无错误:代码语法合规,javac编译时不会报错,能生成.class 文件;
  2. 发生在类加载 / 链接阶段:要么程序启动时就报错,要么运行到首次使用某个类时才报错;
  3. 属于 Error 而非 Exception:链接错误通常是严重的系统级问题(如依赖库版本冲突),而非业务逻辑问题,JVM 一般无法恢复;
  4. 根源是类依赖关系破坏:不是代码语法 / 逻辑问题,而是类之间的 “协作关系” 出问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值