【安利Java零基础】java基础语法—20道常见异常库(二)

简介: 【安利Java零基础】java基础语法—20道常见异常库

🐋11. 字符串转其他类型异常

🌲🌲描述

public class Demo01 {
    public static void main(String[] args) throws InterruptedException {
        String str1 = "10.55";
        String str2 = "10.55a";
        //转换类型+1
        System.out.println(Integer.parseInt(str1)+1);
    }

709853d7605e4a3dbd075b481e48cd16.png

例如:"10.55"字符串,转换整数报错。


🌲🌲解决方法

方法一: 把字符串中,不能转换的内容删除


               例如:String str1 = "10";


方法二:使用指定类型进行转换,Double小数类型


               例如:Double.parseDouble(str1);


🐋12. 三元运算符使用错误


🌲🌲描述

public class Demo01 {
    public static void main(String[] args) throws InterruptedException {
         10==10?"相等":"不相等";
    }
}

154f1dfceef64e2fb6c042ff5a8e8b14.png

🌲🌲解决方法

public class Demo01 {
    public static void main(String[] args) {
        //三元运算符注意事项
        //三元运算符 结果必须被使用(被展示、被赋值、参与运算)
        //1.被展示
        System.out.println(10==10?"相等":"不相等");
        //10==10?"相等":"不相等";
        //2. 被赋值
        double dd = (10!=9)?10.55:20.55;
        //3. 参与运算
        System.out.println( ((10!=9)?10.55:20.55)>10 );
    }
}

🐋13. Scanner数字和字符串混用问题


🌲🌲描述

数字和字符串在同一个Scanner混用,会导致 nextLine()不能阻塞,被跳过


🌲🌲解决方法

Scanner  数字定义一个变量,字符串定义另一个变量。


🐋14.毫秒值运算超出Int范围


🌲🌲描述

import java.util.Date;
public class Demo01 {
    public static void main(String[] args)  {
        Date d = new Date();
        System.out.println(d.toLocaleString());
        //需求:需要设置365天后的现在
        //365天毫秒值 = 1000*60*60*24*365
        long x = d.getTime()+1000*60*60*24*365;
        d.setTime(x);
        System.out.println(d.toLocaleString());
    }
}

d559df46a9194b7b9ed47de77f1c0128.png

1000*60*60*24*365远远超出int范围,使得数据丢失

🌲🌲解决方法

数变为long类型

dc6e554e44ad4474ad295d7f7f303a66.png

52fafa41fd044712bab638a66101dd95.png

import java.util.Date;
public class Demo01 {
    public static void main(String[] args)  {
        Date d = new Date();
        System.out.println(d.toLocaleString());
        //需求:需要设置365天后的现在
        //365天毫秒值 = 1000*60*60*24*365
        long x = d.getTime()+1000L*60*60*24*365;
        d.setTime(x);
        System.out.println(d.toLocaleString());
    }
}

15. 无法加载和找不到主类错误


🌲🌲描述

public class Demo01 {
    public static void main(String[] args)  {
        System.out.println("你好");
    }
}

a8932bfe05fd40dcaa9e63a4a91abc66.png

执行java代码时,控制台报错:

我们发送的run指令,IDEA接收后,在out目录找不到该java文件的class文件。


导致运行失败


🌲🌲解决方法

代码是无错的,错误在于idea的自动编译机制卡死导致:

方法一:删除out目录,重新编译当前java类。

方法二:手动新建一个java类,把代码复制粘贴进去。

方法三:或者右击,选择重新编译:

c770e428cbb946f2b58521e78ca7d728.png

16. 无限循环后的代码问题

🌲🌲描述

public class Demo01 {
    public static void main(String[] args)  {
       for (;;){
           System.out.println("a");
       }
        System.out.println("你好!");
    }
}

9daabc2053a54e1f8403ed960361725f.png

无限循环后写代码会报错

🌲🌲解决方法

无限循环后不写任何代码

无限循环中 加入条件判断及break/return关键字


🐋17. 无限循环后的代码问题2


🌲🌲描述

break后跟代码,就会展示报错。


public class Demo01 {
    public static void main(String[] args)  {
       int j = 1 ;
       while (j <= 999 ) {
           System.out.println(j);
           break;
           j++;
       }
        System.out.println("while结束");
    }
}

567b5352fed64af6a8c53d9b48163b27.png

🌲🌲解决方法

代码写于break上方

加入分支语句(if、switch)


🐋18. 空指针异常


🌲🌲描述

import java.util.Random;
public class Demo01 {
    public static void main(String[] args)  {
        Random r1 = new Random();
        int i = r1.nextInt(10);
        Random r2 = null ;
        int i1 = r2.nextInt(10);
    }
}

338bf67582654d84bdbecd9ff9837725.png

🌲🌲解决方法

9472c62ec8eb49dabff22a82ce8aaa48.png

import java.util.Random;
public class Demo01 {
    public static void main(String[] args)  {
        Random r1 = new Random();
        int i = r1.nextInt(10);
        Random r2 = null ;
        r2 = new Random();
        int i1 = r2.nextInt(10);
    }
}

19. 索引越界异常


🌲🌲描述

public class Demo01 {
    public static void main(String[] args)  {
        int[] arr = {11,22,33}; //最大索引为:2
        System.out.println(arr[1000]);
        System.out.println(arr[-1000]);
    }
}

90ce48437a664824972b27ee4ecc0e25.png

🌲🌲解决方法

确定索引的范围是 0~数组长度-1  ,不要超范围使用。


🐋20. 结构体中,属性无法使用问题


🌲🌲描述

Student类和Demo1类没有在同一个包下,


Demo1类中直接使用学生类 属性报错:


6e20b7b89ec7441cac8a803d625848bc.png


🌲🌲解决方法

学生类的成语变量(属性)前面加入 public

6a137629700843738a0893971079361d.png


相关文章
|
9天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
|
9天前
|
Java
在 Java 中,如何自定义`NumberFormatException`异常
在Java中,自定义`NumberFormatException`异常可以通过继承`IllegalArgumentException`类并重写其构造方法来实现。自定义异常类可以添加额外的错误信息或行为,以便更精确地处理特定的数字格式转换错误。
|
10天前
|
IDE 前端开发 Java
怎样避免 Java 中的 NoSuchFieldError 异常
在Java中避免NoSuchFieldError异常的关键在于确保类路径下没有不同版本的类文件冲突,避免反射时使用不存在的字段,以及确保所有依赖库版本兼容。编译和运行时使用的类版本应保持一致。
|
11天前
|
Java 编译器
如何避免在 Java 中出现 NoSuchElementException 异常
在Java中,`NoSuchElementException`通常发生在使用迭代器、枚举或流等遍历集合时,尝试访问不存在的元素。为了避免该异常,可以在访问前检查是否有下一个元素(如使用`hasNext()`方法),或者使用`Optional`类处理可能为空的情况。正确管理集合边界和条件判断是关键。
|
14天前
|
Java
Java异常捕捉处理和错误处理
Java异常捕捉处理和错误处理
14 1
|
15天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
16天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
18天前
|
Java API Apache
|
23天前
|
Java
如何在 Java 中处理“Broken Pipe”异常
在Java中处理“Broken Pipe”异常,通常发生在网络通信中,如Socket编程时。该异常表示写入操作的另一端已关闭连接。解决方法包括:检查网络连接、设置超时、使用try-catch捕获异常并进行重试或关闭资源。
|
25天前
|
存储 安全 Java
如何避免 Java 中的“ArrayStoreException”异常
在Java中,ArrayStoreException异常通常发生在尝试将不兼容的对象存储到泛型数组中时。为了避免这种异常,确保在操作数组时遵循以下几点:1. 使用泛型确保类型安全;2. 避免生类型(raw types)的使用;3. 在添加元素前进行类型检查。通过这些方法,可以有效防止 ArrayStoreException 的发生。
下一篇
无影云桌面