Java日常跳坑集锦

原则

  1. 不要害怕BUG,真正的勇士敢于直面自己写的BUG。
  2. 学会看报错的信息提示,确定自己错误的方法。
  3. 学会看报错的行号提示,确定报错的位置,哪里不对点哪里。注意:源码一般不会错,要看的是自己写的代码。
  4. 所有的实现以自己环境下实测结果为准

借鉴

能让程序员头痛不已,Java日常开发的21个坑,你踩过几个?

控制台无输出

使用System.out.println(p);打印对象的时候,控制台没有任何输出,可以修改输出的内容,比如改成"phone" + p

tomcat执行效果无变化

修改了源码后,使用eclipse里面的tomcat自动部署无任何反应,可以尝试更换电脑。

报错位置语法没问题

当前行代码显示错误,但是检查后发现当前行代码语法无误时,可以使用格式化快捷键Ctrl+Shift+F或是Ctrl+Alt+L 检查IDE能否正常格式化代码。如果不行,则说明有大括号漏掉了。

ArithmeticException : / by zero算术异常,除数不能为0。

System.out.println("两数相除的结果:" + a / b);这个语句中当b为零时会报这个错

InputMismatchException输入不匹配异常。

int b = new Scanner(System.in).nextInt();这个语句中调用的是nextInt()方法,如果获取的是非整数,就会报这个错

IDEA里的module莫名其妙变成gradle

  • 情景:IDEA里面的module里面多出.gradle文件夹、gradle文件夹、gradlew文件夹、gradlew.bat文件,而且里面的.java文件变成了红色的图标,类里面即使有main()方法,点击右键时也没有运行选项,此时可以在右侧栏上看到一个gradle的标签,我们点开后,可以在这个窗口里面看到出问题的这个module,在这里我们先选中这个module然后点击这个窗体中的-号,就是从这里面删除这个module的意思。
    在这里插入图片描述
    在这里插入图片描述
    如此操作后就会变成可以运行的状态了。参考原文
    如果此时还是不能运行,可以在这个module的src文件夹上点右键 - Mark Directory as - Resources Root,这样应该就可以按正常的java的module来使用了。但是发现这样修改回来后的moudle上没有了原生的mdule上的那个青蓝色的小方块了。目前还不清楚为什么,后面发现了原因再补笔记
    在这里插入图片描述

InstantiationException实例化异常

使用反射获取一个接口的对象的时候,会报这个错误,一般看到这个错误可以先看下是否要创建对象Class是个接口或是抽象类。如果都不是,那么检查对应的类里面是否有定义无参构造。

StackOverflowError 栈内存溢出异常

  • 普通方法循环调用
    有可能是两个方法互相调用,形成死循环
  • 构造方法的循环调用
    代码可以定位到一对象内部声明了一个自己类型的变量并同时new了自己的对象,此时构成死循环。
    即:一个类内部定义了一个自己类型的变量,并同时赋值为new出来的自己的对象。此时由于创建对象时就需要初始化所有成员变量,但初始化这个成员变量时又需要创建此类的变量,循环往复

StringIndexOutOfBoundsException: String index out of range: 8

调用StringcharAt(int index)方法时,如果index>length() 会报这个错误`

ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

使用BigDecimal进行除法运算,结果是一个除不尽的数时,会报这个错误,只要再传一个指定保留几位小数的标识就可以了。

FileNotFoundException: d:\a\2.txt (系统找不到指定的文件。)

使用InputStream读取一个不存在的文件的时候会遇到这个异常

NotSerializableException: cn.tedu.serializable.Student序列化

使用ObjectOutputStream把对象进行序列化输出时,如果该对象未implements Serializable,则会报些 错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水晶心泉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值