
正文
java代码常见的坑 java代码例子讲解
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
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:是指在自定义异常时,如果方法出现异常,那么将作为引用方法的对象抛出。即抛出异常。
相关问答
Q1: java中常见的几种异常
1、空指针异常类java代码常见的坑:NullPointerException
调用java代码常见的坑了未经初始化的对象或者是不存在的对象。经常出现在创建图片java代码常见的坑,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针, 即把数组的初始化和数组元素的初始化混淆起来了。
数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化, 依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)。
2、数据类型转换异常:java.lang.ClassCastException
当试图将对某个对象强制执行向下转型,但该对象又不可转换又不可转换为其子类的实例时将引发该异常,如下列代码。
Object obj = new Integer(0);
String str = obj;
3、没有访问权限:java.lang.IllegalAccessException
当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常。
4、方法的参数错误:java.lang.IllegalArgumentException
比如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。
5、数组下标越界异常:java.lang.IndexOutOfBoundsException
查看调用的数组或者字符串的下标值是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了。
还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候先查看一下数组的length,以免出现这个异常。
6、文件已结束异常:EOFException
当程序在输入的过程中遇到文件或流的结尾时,引发异常。因此该异常用于检查是否达到文件或流的结尾
7、文件未找到异常:FileNotFoundException
当程序试图打开一个不存在的文件进行读写时将会引发该异常。该异常由FileInputStream,FileOutputStream,RandomAccessFile的构造器声明抛出,即使被操作的文件存在,但是由于某些原因不可访问,比如打开一个只读文件进行写入,这些构造方法仍然会引发异常。
8、字符串转换为数字异常:NumberFormatException
当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常.如现在讲字符型的数据“123456”转换为数值型数据时,是允许的。
但是如果字符型数据中包含了非数字型的字符,如123#56,此时转换为数值型时就会出现异常。系统就会捕捉到这个异常,并进行处理。
9、指定的类不存在: java.lang.ClassNotFoundException
这里主要考虑一下类的名称和路径是否正确即可,通常都是程序试图通过字符串来加载某个类时可能引发异常。比如:调用Class.forName;或者调用ClassLoad的finaSystemClass;或者LoadClass;
10、实例化异常:java.lang.InstantiationException
当试图通过Class的newInstance方法创建某个类的实例,但程序无法通过该构造器来创建该对象时引发。Class对象表示一个抽象类,接口,数组类,基本类型 。该Class表示的类没有对应的构造器。
Q2: java开发过程中遇到过哪些困难
java开发过程中会遇到JDK的安装和环境配置的问题和做课程设计的过程中遇到代码的调试等问题,java开发推荐千锋教育,千锋教育成立教研学科中心,推出贴近企业需求的线下技能培训课程。课程包含HTML5大前端培训、JavaEE+分布式开发培训、Python人工智能+数据分析培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、网络安全培训等培训。
Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。
想要了解更多有关Java培训的相关信息,推荐咨询千锋教育。采用全程面授高品质、高体验培养模式,学科大纲紧跟企业需求,拥有国内一体化教学管理及学员服务,在职业教育发展道路上不断探索前行,公司总部位于北京,目前已在20个城市成立分公司,现有教研讲师团队300余人。
Q3: 如何避免及解决万恶的java.lang.NullPointerException错误
作为一个java 程序员,特别是刚入门或初学者,遇到的最多的异常我想当属 java.lang.NullPointerException,当然这是一个不可避免的。不管你是多老的程序员,写的程序也不能保证不出现这个异常。但不可杜绝,并不代表不可避免,不可减少其出现的概率。下面就探讨下如何尽量避免其出现,首先看常见的出现该异常的原因。 常见原因至少有以下几类: 对java 对象不熟悉,特别体现在初学者及刚入门身上。如:类的成员还是对象的时候,初学者往往不知道如何初始化成员对象,结果导致对象为初始化就调用。 数据是从外部获取,如数据库,取出数据后不检查就直接调用,常发生在用hibernate 等orm 工具取完数据后数据展示部分。 java代码编写习惯。编写类方法不对方法参数进行检查就使用。 引入外部包,而没有引入外部包依赖包 粗心。这是最大的原因,特别是对于有一定编程经验的人来说
解决方法: 第一类属于java 基础不牢,建议多做练习,熟悉java 对象生命周期的相关知识。如java 对象内存分配,堆与栈,java 初始化过程等。 在外部读入数据的话,建议在读入数据后就检查其是否为null 。当然有时候也跟需求来定,但使用前必须做好检查工作。 跟编程经验有相当关系。公用的方法,一般使用前检查参数,该抛出异常的抛出异常,该用默认值的用默认值处理。一些私有方法,人们因为觉得只有自己使用,自己控制不传人null 值就可以,懒得去检查空异常。确实我自己也常这样干,但发现自己写的,但自己却总保证不了,不传入空。所以建议使用前检查,但可以不抛出异常,可使用断言,自己用默认值处理掉。 引入外部包出现NullPointerException,随着各种框架的发展而越来越常见。主要是人们盲目引用各种包,而不去详细评估引用包的效果,及不去了解所引入包的依赖包。现在有maven 工具,如果使用它构建工程的话,依赖报错可能就会少点了。 粗心。这个就没办法了,相信没几个人改得了。且因为粗心而出现的bug,自己往往很难找出原因,这时可以借下团队的力量,让同事帮你去找,可能很快就找到了 如何找NullPointerException 出错代码: NullPointerException 异常很找出出错位置还是比较容易的,java 的异常链机制可以让你很快找到错误代码所在。这里提醒一点千万不要使用 try { 代码; }catch(Exception){} 因为这样出错了控制台不报,log 不记,找死你。
Q4: 北大青鸟java培训:零基础学习Java应该避免的坑?
零基础学习Java开发技术的坑有哪些java代码常见的坑,希望下面这些内容对小伙伴们能有所帮助,希望能和大家分享零基础学习Java开发技术可能存在的坑,或者是或多或少都能踩到的一部分坑,下面广西计算机学校为大家具体介绍。
一、有自己的计划根据自己的目标制定系统可行的学习计划。
首先,方便您管理好自己的时间和目标,知道每天要做什么,实现什么目标,每个阶段需要学习多长时间,什么时候学会Java开发。
其次,学习计划也是以知识点为主。
Java知识系统比较复杂,而且方向也比较多,所以制定学习计划的另一个目的是帮助java代码常见的坑你按照方向去收集知识点,广西广西IT培训认为这样能够防止在学习一些将来不会用到的知识点的时候,能够不用花费太多时间。
二、将坚持当成一种习惯选择学习技术,要放弃很多东西,需要花费维持他人的人际关系,锻炼交际能力的时间来写代码java代码常见的坑;为了更快地学习新知识,每天都是从公司到家里过着单调的生活,逐渐成为技术宅。
所以,广西北大青鸟建议你一定要确定你真的很喜欢Java,真的可以钻研技术再学习。
三、学会首先自己解决问题,然后再请教别人开源是Java最大的特征之一,网上到处都有关于Java学习的报道。
另外,如果有Java的基础的话,可以和身边有相同兴趣的人一起讨论。
这比单独开发项目来提高效率要高效得多。
广西广西java软件开发认为决不能自己一个人闷头干,也不能一有什么问题马上去问别人。
java代码常见的坑的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java代码例子讲解、java代码常见的坑的信息别忘了在本站进行查找喔。






