Java编程中常见的错误都有哪些
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编程中常见的错误都有哪些相关的知识,希望对你有一定的参考价值。
相信作为程序员的我们在对程序进行编译过程中经常会遇到错误,或者在运行过程中出现错误,在这里主要跟大家谈谈经常遇到的一些异常与错误,以及解决办法。
异常是指程序在编译或运行过程出现的错误。
在java.lang包中Throwable包含了所有的异常。
Error (错误) 和Exception(异常)
(1)Error(错误)
一旦发生无法修复,但可以避免发生。
常见错误类:
IOError:I/O错误,当发生严重的I/O错误时,抛出此错误。
VirtualMachineError :虚拟机错误,当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。
StackOverflowError:栈内存满了,当应用程序递归太深而发生堆栈溢出时,抛出该错误。
OutofMemoryError:堆内存满了,因为内存溢出或没有可用的内存提供给垃圾回收器时,Java 虚拟机无法分配一个对象,这时抛出该异常。
以上是一些常见的错误,在Error类中还有一些别的错误(参照文件Java.lang.Throwable.Error).
(2)Exception(异常)
一旦发生,可以捕获并处理,不会导致程序终止,有时可以避免有时无法避免。
异常的分类:
1.编译时异常(需要强制处理) 2.运行时异常(不需要强制处理)
常见的异常有:
IOException:输入输出流异常
FileNotFoundException:文件找不到的异常
ClassNotFoundException:类找不到的异常
DataFormatException:数据格式化异常
NoSuchFieldException:没有匹配的属性异常
NoSuchMethodException:没有匹配的方法异常
SQLException:数据库操作异常
TimeoutException:执行超时异常
常见的运行时异常:
RuntimeException:运行时异常
NullPointerException:空指针异常
ArrayIndexOutofBoundsException:数组越界异
ClassCastException:类型转换异常
IllegalArgumentException:非法的参数异常
InputMismatchException:输入不匹配
以上是常见的一些异常,另外还有别的异常,参见文件:Java.lang.Throwable.Exception
既然我们常常会遇到一些异常,那我们如何来处理这些异常就是一个急需解决的事情。
(1) 如何处理编译时异常?
方法一:将需要处理的代码块放在一个try...catch...中
try
//需要处理异常的代码
catch(XXXException ef)
ef.printStackTrace();
我们方法一就是要将我们不确定的代码放入try......catch中,先进行try一下,如果没有异常,则不会触发catch,没有输出,一旦出现异常,那么catch就会工作,在catch中捕获异常信息,根据异常信息进行补救措施。
如以下代码:
方法二:在出现异常的方法上直接向上抛出异常,throws
void ff() throws XXXException
将出现的异常的代码中,放入如上的方法中,就会将异常抛给该方法的上一级,在主函数上继续向上抛,最终抛给JVM java虚拟机,让JVM来解决该问题。
如代码:
注意:在catch和throws的时候如果不确定是什么异常,就直接写一个Exception.
(2) 如何处理运行时异常?
1.一般情况下,运行时异常是不用处理的
2.在某些情况下,如果对发生异常的结果进行处理,也可以对运行时异常进行try...catch...
以上就是一些我们处理编译时异常和运行时异常的方法。
在程序出现异常时,有时候我们可以自定义异常,以便我们能够发现是什么异常。
那么如何自定义异常??
1.当运行时,程序出现意外,可以抛出异常对象来结束程序
如:
//抛出运行时异常对象
RuntimeException ef = new RuntimeException("下标越界!index:"+index+" ,size:"+size());
throw ef;
2.对于编译时异常,同样可以抛出异常对象
但在方法定义时候必须加上throws
如:
public void test(int t) throws Exception
if (t < 0 || t > 100)
Exception ef = new Exception("数据错误");
throw ef;
例如:
运行结果:
从结果可以看出,我们在输入数据的时候出现错误,这样通过自定义异常能够让我们更直接快速的找到运行或编译时的异常。
在上述中我们分别提到了三种throw,分别是Throwable,Throws以及throw,那么到底三者有什么区别?
Throwable:是指在在Java.lang包中的一个类,其包含了所有的异常和错误,其中类Error和Exception 是它
的子类。
Thows:是指在解决编译时异常,将方法中异常抛给上一级,在方法后面要加Throw Exception来进行抛。
throw:是指在自定义异常时,如果方法出现异常,那么将作为引用方法的对象抛出。即抛出异常。
参考技术A 错误就是error,它不同于异常。有时候程序不发生异常是不会出问题的,但有错误一定有问题。常见的错误:编写错误,语句错误---这两个编译器会提醒,也就是常用的eclipse;
逻辑错误,这个要看你自己的逻辑思维了。
潜在错误,也就是编写语句逻辑都没有问题,但jvm检测有问题,就需要你自己找了,通常潜在错误都有逻辑问题。 参考技术B
作为程序员在程序开发的过程中难免的要出现一些不是自己水平问题二出现的一些常见的错误。本文就为大家介绍一些常见在Java开发过程中遇见的一些常见的错误。
一、常见错误1:多次拷贝字符串
测试所不能发现的一个错误是生成不可变(immutable)对象的多份拷贝。不可变对象是不可改变的,因此不需要拷贝它。最常用的不可变对象是String。
二、常见错误2:没有克隆(clone)返回的对象
封装(encapsulation)是面向对象编程的重要概念。不幸的是,Java为不小心打破封装提供了方便——Java允许返回私有数据的引用(reference)。
三、常见错误3:不必要的克隆
四、常见错误4:自编代码来拷贝数组
五、常见错误5:拷贝错误的数据
有时候程序员知道必须返回一个拷贝,但是却不小心拷贝了错误的数据
六、常见错误6:检查new 操作的结果是否为null
检查当然没什么错误,但却不必要,if和throw这两行代码完全是浪费,他们的唯一功用是让整个程序更臃肿,运行更慢。
七、常见错误7:用== 替代.equals
在Java中,有两种方式检查两个数据是否相等:通过使用==操作符,或者使用所有对象都实现的.equals方法。原子类型(int, flosat, char 等)不是对象,因此他们只能使用==操作符
八、常见错误8:混淆原子操作和非原子操作
Java保证读和写32位数或者更小的值是原子操作,也就是说可以在一步完成,因而不可能被打断,因此这样的读和写不需要同步。
九、常见错误9:在catch 块中作清除工作
十、常见错误10: 增加不必要的catch 块
一些开发者听到try/catch块这个名字后,就会想当然的以为所有的try块必须要有与之匹配的catch块。
C++程序员尤其是会这样想,因为在C++中不存在finally块的概念,而且try块存在的唯一理由只不过是为了与catch块相配对。
Java编程常用的工具都有哪些?
在当今的互联网信息发展的时代,IT行业已经成为了热门行业发展之一,凌阳教育的老师曾经说过Java也取而代之的已经成为现在的主流,对于Java编程中我们经常都会常见的一些常用的工具,下面小编就带大家来了解一下吧:
1.ServiceLoader-加载服务主要是用阿里获取接口的所有实现
Java开发人员常常希望将使用和创建组件的内容区分开来,这通常是通过创建一个描述组件动作的接口,并使用某种中介创建组件实例来完成的。
2.SCanner
有无数Java工具能帮助您构建解析器,很多函数语言已成功构建解析器函数库(解析器选择器)。但如果要解析的是逗号分隔值文件,或空格分隔文本文件,又怎么办呢?大多数工具用在此处就过于隆重了,而String.split()又不够。(对于正则表达式,请记住一句老话:“您有一个问题,用正则表达式解决。那您就有两个问题了。”)
3.Timer
Java.util.Timer和TimerTask类提供了方便、相对简单的方法可在定期或一次性延迟的基础上执行任务。
4.StAX-解析XML文件
当XML第一次出现在很多Java开发人员面前时,有两种基本的解析XML文件的方法。SAX解析器实际是由程序员对事件调用一系列回调方法的大型状态机。DOM解析器将整个XML文档加入内存,并切割成离散的对象,它们连接在一起形成一个树。该树描述了文档的整个XMLInfoset表示法。这两个解析器都有缺点:SAX太低级,无法使用,DOM代价太大,尤其对于大的XML文件—整个树成了一个庞然大物。
比较luckly的是,Java开发人员找到第三种方法来解析XML文件,通过对文档建模成“节点”,它们可以从文档流中一次取出一个,检查,然后处理或丢弃。这些“节点”的“流”提供了SAX和DOM的中间地带,名为“StreamingAPIforXML”,或者叫做StAX。(此缩写用于区分新的API与原来的SAX解析器,它与此同名。)StAX解析器后来包装到了JDK中,在Javax.xml.stream包。
上面就是Java编程常用的一些开发工具,想要学习的人可以多多复习复习,对于大家的Java学习应该也是有一定的帮助的
以上是关于Java编程中常见的错误都有哪些的主要内容,如果未能解决你的问题,请参考以下文章