JAVA常见的运行时异常总结

合集下载

RuntimeException异常处理汇总

RuntimeException异常处理汇总

RuntimeException异常处理汇总Java中所有异常的⽗类是Throwable类,在Throwable类下有两⼤⼦类:⼀个是Error类,指系统错误异常,例如:VirtualMachineError 虚拟机错误,ThreadDeath 线程死锁。

⼀般如果是Error类的异常的话,就是程序的硬伤,就好⽐是⼯⼚⾥断⽔断电,机器损坏了。

另⼀个是Exception类,指编码、环境、⽤户操作输⼊等异常,这个是⽐较常见的异常类,Exception类下⾯⼜有两个⼦类,RuntimeException ⾮检查异常和检查异常,⾮检查⼜称为运⾏时异常,在RuntimeException异常中有⼏个常见的⼦类,例如:InputMismatchException 输⼊不匹配异常ArithmeticException 算术运算异常NullPointerException 空指针异常ArrayIndexOutOfBoundsException 数组下标越界异常ClassCastException 类型转换异常检查异常中的⼦类有:IOException ⽂件异常SQLException SQL数据库错误异常在实际的开发中,处理异常⼀般使⽤以下三种⽅式:⼀、使⽤try-catch语句块捕获和处理异常使⽤try-catch 以及 try-catch-finally 来捕获和处理异常时,catch⾥的异常列表⼀般是⼦类在前,⽗类在后,不然编译时程序会报错。

⽰例如下:1 import java.util.InputMismatchException;2 import java.util.Scanner;34 public class 异常处理 {56 public static void main(String[] args) {78 System.out.println("请输⼊你的年龄");9 Scanner input = new Scanner(System.in);10 try{11 System.out.println("请输⼊第⼀个数:");12 int one = input.nextInt();13 System.out.println("请输⼊第⼆个数:");14 int two = input.nextInt();15 System.out.println("两数相除结果为:"+one/two);16 }catch(InputMismatchException e){17 System.out.println("请输⼊整数");18 }catch(ArithmeticException e){19 System.out.println("除数不能为零");20 }catch(Exception e){21 System.out.println("程序执⾏中出现异常");22 }finally{23 System.out.println("程序执⾏结束!");24 }25262728 }2930 }⼆、使⽤throws关键字声明将要抛出何种类型的异常语法public void ⽅法吗(参数)throws 异常列表{ throw new Exception(); }⽰例如下:1 public class ThrowDemo {23 public static void main(String[] args) {45 ThrowDemo td = new ThrowDemo();6 try {7 td.test(10, 0);8 } catch (Exception e) {9 System.out.println("异常抛出");10 }11 }1213 public void test(int a,int b) throws Exception{14 int c = a/b;15 System.out.println("计算结果为:"+c);1617 }1819 }三、⾃定义异常类有的时候我们抛出的异常在Throwable类中没有定义,就需要我们⾃⼰⾃定义⼀个异常的类,⽐如我们实际开发中需要⽤到⼀个“开车别喝酒”的异常,我们就可以定义⼀个这样的异常类来处理我们项⽬中需要处理的异常。

Java异常(Exception)处理以及常见异常总结

Java异常(Exception)处理以及常见异常总结

Java异常(Exception)处理以及常见异常总结⽬录前⾔异常简介异常类型总结前⾔很多事件并⾮总是按照⼈们⾃⼰设计意愿顺利发展的,经常出现这样那样的异常情况。

例如:你计划周末郊游,计划从家⾥出发→到达⽬的→游泳→烧烤→回家。

但天有不测风云,当你准备烧烤时候突然天降⼤⾬,只能终⽌郊游提前回家。

“天降⼤⾬”是⼀种异常情况,你的计划应该考虑到这样的情况,并且应该有处理这种异常的预案。

计算机程序的编写也需要考虑处理这些异常情况。

异常(exception)是在运⾏程序时产⽣的⼀种异常情况,已经成为了衡量⼀门语⾔是否成熟的标准之⼀。

⽬前的主流编程语⾔java也提供了异常处理机制。

异常简介Java中的异常⼜称为例外,是⼀个在程序执⾏期间发⽣的事件,它中断正在执⾏程序的正常指令流。

为了能够及时有效地处理程序中的运⾏错误,必须使⽤异常类,这可以让程序具有极好的容错性且更加健壮。

在 Java 中⼀个异常的产⽣,主要有如下三种原因:1. Java 内部错误发⽣异常,Java 虚拟机产⽣的异常。

2. 编写的程序代码中的错误所产⽣的异常,例如空指针异常、数组越界异常等。

3. 通过 throw 语句⼿动⽣成的异常,⼀般⽤来告知该⽅法的调⽤者⼀些必要信息。

Java 通过⾯向对象的⽅法来处理异常。

在⼀个⽅法的运⾏过程中,如果发⽣了异常,则这个⽅法会产⽣代表该异常的⼀个对象,并把它交给运⾏时的系统,运⾏时系统寻找相应的代码来处理这⼀异常。

我们把⽣成异常对象,并把它提交给运⾏时系统的过程称为拋出(throw)异常。

运⾏时系统在⽅法的调⽤栈中查找,直到找到能够处理该类型异常的对象,这⼀个过程称为捕获(catch)异常。

例 1为了更好地理解什么是异常,下⾯来看⼀段⾮常简单的 Java 程序。

下⾯的⽰例代码实现了允许⽤户输⼊ 1~3 以内的整数,其他情况提⽰输⼊错误。

package io.renren.config;import java.util.Scanner;/*** Created by LiYangYong*/public class TestException {public static void main(String[] args) {System.out.println("请输⼊您的选择:(1~3 之间的整数)");Scanner input = new Scanner(System.in);int num = input.nextInt();switch (num) {case 1:System.out.println("one");break;case 2:System.out.println("two");break;case 3:System.out.println("three");break;default:System.out.println("error");break;}}}正常情况下,⽤户会按照系统的提⽰输⼊ 1~3 之间的数字。

Java异常处理运行时异常(RuntimeException)详解及实例

Java异常处理运行时异常(RuntimeException)详解及实例

Java异常处理运⾏时异常(RuntimeException)详解及实例Java异常处理运⾏时异常(RuntimeException)详解及实例RuntimeExceptionRunntimeException的⼦类:ClassCastException多态中,可以使⽤Instanceof 判断,进⾏规避ArithmeticException进⾏if判断,如果除数为0,进⾏returnNullPointerException进⾏if判断,是否为nullArrayIndexOutOfBoundsException使⽤数组length属性,避免越界这些异常时可以通过程序员的良好编程习惯进⾏避免的1:遇到运⾏时异常⽆需进⾏处理,直接找到出现问题的代码,进⾏规避。

2:就像⼈上⽕⼀样⽛疼⼀样,找到原因,⾃⾏解决即可3:该种异常编译器不会检查程序员是否处理该异常4:如果是运⾏时异常,那么没有必要在函数上进⾏声明。

案例1:除法运算功能(div(int x,int y))2:if判断如果除数为0,throw new ArithmeticException();3:函数声明throws ArithmeticException4:main⽅法调⽤div,不进⾏处理5:编译通过,运⾏正常6:如果除数为0,报异常,程序停⽌。

7:如果是运⾏时异常,那么没有必要在函数上进⾏声明。

1:Object类中的wait()⽅法,内部throw了2个异常 IllegalMonitorStateException InterruptedException1:只声明了⼀个(throws) IllegalMonitorStateException是运⾏是异常没有声明。

class Demo{public static void main(String[] args){div(2, 1);}public static void div(int x, int y) {if (y == 0) {throw new ArithmeticException();}System.out.println(x / y);}}感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。

java实验报告上机过程遇到的问题及解决方法

java实验报告上机过程遇到的问题及解决方法

java实验报告上机过程遇到的问题及解决方法Java实验报告上机过程遇到的问题及解决方法在进行Java实验时,往往会遇到各种问题,这些问题可能与代码编写、调试、环境配置等方面有关。

在本文中,我将分享一些我在实验过程中遇到的常见问题以及相应的解决方法,希望能够帮助读者更好地进行Java实验。

1. 编译错误在编写Java代码时,经常会碰到编译错误。

编译错误可能是由于语法错误、缺少库文件、命名冲突等问题导致的。

解决这类问题的方法有:- 仔细检查代码,确保语法正确且符合Java语法规范。

常见的错误包括缺少分号、拼写错误等。

- 确保所使用的库文件已正确导入,并在代码中进行正确的引用。

- 对于命名冲突问题,可以尝试修改变量名或使用全限定名来解决。

2. 运行时错误在代码编译通过后,运行程序时可能会出现各种错误。

空指针异常、数组越界等。

解决这类问题的方法有:- 对于空指针异常,可以通过添加空指针判断来避免。

使用if语句判断对象是否为null再进行操作。

- 对于数组越界错误,需要确保访问数组元素时的索引值在合法范围内。

可以使用条件语句或循环来进行检查。

3. 调试问题在调试Java程序时,可能遇到程序无法正常运行或结果不符合预期的情况。

以下是一些解决方法:- 使用调试工具,如Eclipse、IntelliJ IDEA等,设置断点进行代码逐行调试。

通过观察变量的值和程序执行流程,可以找到问题所在。

- 添加日志输出语句,可以帮助我们查看程序在执行过程中的状态,从而找到错误原因。

- 使用try-catch块捕获异常,并在异常处理代码中添加适当的逻辑,以保证程序的正常运行。

4. 环境配置问题在进行Java实验时,可能需要进行一些环境配置,如设置类路径、引入第三方库等。

解决环境配置问题的方法有:- 确认所使用的开发工具是否已正确配置,并且已安装Java JDK和相应版本的JRE。

- 检查类路径是否正确设置,确保能够正确引用所需的库文件。

Java异常总结runtime Exceptiong

Java异常总结runtime Exceptiong

一般面试中java Exception(runtimeException)是必会被问到的问题常见的异常列出四五种,是基本要求。

更多的。

需要注意积累了常见的几种如下:NullPointerException-空指针引用异常ClassCastException-类型强制转换异常。

IllegalArgumentException-传递非法参数异常。

ArithmeticException-算术运算异常ArrayStoreException-向数组中存放与声明类型不兼容对象异常IndexOutOfBoundsException-下标越界异常NegativeArraySizeException-创建一个大小为负数的数组错误异常NumberFormatException-数字格式异常SecurityException-安全异常UnsupportedOperationException-不支持的操作异常算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转换异常:ClassCastException数组负下标异常:NegativeArrayException数组下标越界异常:ArrayIndexOutOfBoundsException违背安全原则异常:SecturityException文件已结束异常:EOFException文件未找到异常:FileNotFoundException字符串转换为数字异常:NumberFormatException操作数据库异常:SQLException输入输出异常:IOException方法未找到异常:NoSuchMethodExceptionng.AbstractMethodError抽象方法错误。

当应用试图调用抽象方法时抛出。

ng.AssertionError断言错。

用来指示一个断言失败的情况。

ng.ClassCircularityError类循环依赖错误。

Java常见异常(RuntimeException)详细介绍并总结

Java常见异常(RuntimeException)详细介绍并总结

Java常见异常(RuntimeException)详细介绍并总结本⽂重在Java中异常机制的⼀些概念。

写本⽂的⽬的在于⽅便我很长时间后若是忘了这些东西可以通过这篇⽂章迅速回忆起来。

1. 异常机制1.1 异常机制是指当程序出现错误后,程序如何处理。

具体来说,异常机制提供了程序退出的安全通道。

当出现错误后,程序执⾏的流程发⽣改变,程序的控制权转移到异常处理器。

1.2 传统的处理异常的办法是,函数返回⼀个特殊的结果来表⽰出现异常(通常这个特殊结果是⼤家约定俗称的),调⽤该函数的程序负责检查并分析函数返回的结果。

这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆;可读性降低,将程序代码与处理异常的代码混爹在⼀起;由调⽤函数的程序来分析错误,这就要求客户程序员对库函数有很深的了解。

1.3 异常处理的流程1.3.1 遇到错误,⽅法⽴即结束,并不返回⼀个值;同时,抛出⼀个异常对象1.3.2 调⽤该⽅法的程序也不会继续执⾏下去,⽽是搜索⼀个可以处理该异常的异常处理器,并执⾏其中的代码2 异常的分类2.1 异常的分类2.1.1 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。

2.1.2 Error和RuntimeException及其⼦类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。

2.2 每个类型的异常的特点2.2.1 Error体系 Error类体系描述了Java运⾏系统中的内部错误以及资源耗尽的情形。

应⽤程序不应该抛出这种类型的对象(⼀般是由虚拟机抛出)。

如果出现这种错误,除了尽⼒使程序安全退出外,在其他⽅⾯是⽆能为⼒的。

java常见运行时错误

java常见运⾏时错误java常见运⾏时异常1.算术异常类:ArithmeticExecption2.3.空指针异常类:NullPointerException4.5.类型强制转换异常:ClassCastException6.7.数组负下标异常:NegativeArrayException8.9.数组下标越界异常:ArrayIndexOutOfBoundsException10.11.违背安全原则异常:SecturityException12.13.⽂件已结束异常:EOFException14.15.⽂件未找到异常:FileNotFoundException16.17.字符串转换为数字异常:NumberFormatException18.19.20.操作异常:SQLException21.22.23.输⼊输出异常:IOException24.25.26.⽅法未找到异常:NoSuchMethodException27.28.29.1. .lang.nullpointerexception30. 这个异常⼤家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调⽤了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图⽚,调⽤数组这些操作中,⽐如图⽚未经初始化,或者图⽚创建时的路径错误等等。

对数组操作中出现空指针,很多情况下是⼀些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。

数组的初始化是对数组分配需要的空间,⽽初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进⾏初始化(如果要调⽤的话)31.32. 2. ng.classnotfoundexception33. 这个异常是很多原本在jb等开发环境中开发的程序员,把 jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这⾥主要考虑⼀下类的名称和路径是否正确即可,如果是在jb下做的程序包,⼀般都是默认加上package的,所以转到wtk 下后要注意把package的路径加上。

Java中常见错误和异常解决方法(打印)

ng.NullPointerException原因是:有空指针,有地址没赋值2.Exception in thread "main" ng.ArithmeticException: / by zero原因是除数是03.ArrayIndexOutOfBoundsException原因是:数组越界原因是:数字格式化有问题5.Unhandled exception type Exception原因是:没有进行异常处理6.进行国际化操作的时候遇到这样的错误:Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name Message, locale zh_CN答:因为在命令提示符中,是没有错误的解决方法是:在myeclipse中,会出现这个错误1.初步学习最近在学习ResourseBundle时遇到了“Can't find bundle for base name ”这个错误搞了很久才解决了。

原因就是类路径问题要将属性文件放在类路径中!百度里很多都是教程但没有涉及到解决方法! 2.中文显示:测试文件java 代码package com.lht.ResourseBundleStudy;import java.util.ResourceBundle;public class ResourseBundleDemo {public static void main(String[] args) {ResourceBundle resource =ResourceBundle.getBundle("test");System.out.print(resource.getString("msg0") + "!");System.out.println(resource.getString("msg1") + "!"); }}test.propertiesmsg0="Hello World"msg1="da jia hao"开始自己测试的时候:将属性文件放在bin/下也试过也不行无赖中就在google中搜索了一下终于在sun的java论坛()中找到了线索下面是帖子的内容:I've solved the problem the best way possible. Basically what i've done is added a new class folder named config to the project home dir. Then i added this classfolder to the classpath in project properties. After doing all of this you only need to reference the properties file by "Email".Hope this helps anyone else who is having similiar problems.基本意思就是在src下建立classes(名字无所谓)文件夹将属性文件存放在下面,然后将这个文件夹加入类路径中!运行就可以了:加入类路径的方法:你的工程文件夹->properties->选择Libraries选项卡->Add Class Folder将刚才建立的文件夹加入就可以了!结果如下:"Hello World"!"da jia hao";!2.中文显示在classes目录下建立message_CH.properties内容如下:ms0="大家好"同样用上面的测试文件!结果如下:"?ó????"!乱码怎么回事啊!在百度里搜索后找到了答案有以为网友写的很清楚:下面引用如下:原理Property文件中,使用的编码方式根据机器本身的设置可能是GBK或者UTF-8。

java程序错误类型及异常处理

java程序错误类型及异常处理一、程序的错误类型在程序设计中,无论规模是大是小,错误总是难免的。

程序的设计很少有能够一次完成,没有错误的(不是指HelloWorld这样的程序,而是要实现一定的功能,具备一定实用价值的程序),在编程的过程中由于种种原因,总会出现这样或那样的错误,这些程序的错误就是我们常说的“Bug”,而检测并修正这些错误的方法就是“Debug”(调试)。

基本上所有的集成开发环境都提供了强大的和程序调试功能,在程序进行编译,连接,运行时,会对程序中错误进行诊断。

程序的错误可以抽象分为三类:语法错误、运行错误和逻辑错误。

1、语法错误是指由于编程中输入不符合语法规则而产生的。

程序编译就通不过,程序不能运行起来。

此类错误最简单,调试起来比较容易例如:表达式不完整、缺少必要的标点符号、关键字输入错误、数据类型不匹配、循环语句或选择语句的关键字不匹配等。

通常,编译器对程序进行编译的过程中,会把检测到的语法错误以提示的方式列举出来,又称为编译错误。

语法错误的调试,则可以由集成开发环境提供的调试功能来实现,在程序进行编译时,编译器会对程序中的语法错误进行诊断。

编译诊断的语法错误分为3中:致命错误、错误和警告。

(1)致命错误:这个错误大多是编译程序内部发生的错误,发生这类错误时,编译被迫中止,只能重新启动编译程序,但是这类错误很少发生,为了安全,编译前最好还是先保存程序。

(2)错误:这个错误通常是在编译时,语法不当所引起的。

例如:括号不匹配,变量未声明等。

产生这类错误时,编译程序会出现报错提示,我们根据提示对源程序进行修改即可。

这类错误是出现最多的。

(3)警告:是指被编译程序怀疑有错,但是不确定,有时可强行通过。

例如:没有加void声明的主函数没有返回值,double数据被转换为float类型等。

这些警告中有些会导致错误,有些可以通过。

常规解决方法:此类错误一般程序编译系统会自动提示相应的错误地点和错误原因,比如哪一行代码少了个括号等诸如此类的提示,常见的错误,看懂直接改正即可,如果是看不懂原因,可以将错误提示信息输入搜索引擎查找一下,一般都能找到具体的解决办法。

JAVA异常及解决方法

java异常及解决方法1:.BindException:Address already in use解决方法在网络编程中,特别是在短时间内new的网络连接太多,经常出现.BindException:Address already in use: JVM_Bind的异常,网络有很多介绍此异常的,通常都是在说是要使用的端口被别的程序已经使用,但有时并不是这个原因,通过仔细查找,找到一些很好的资料,在此将其一一记录下来。

短时间内new socket操作过多而socket.close()操作并不能立即释放绑定的端口而是把端口设置为TIME_WAIT状态过段时间(默认240s)才释放(用netstat-na可以看到)最后系统资源耗尽(windows上是耗尽了pool of ephemeral ports这段区间在1024-5000之间)Socket Remember that TCP guarantees all data transmitted will be delivered,if at all possible.When you close a socket,the server goes into aTIME_WAIT state,just to be really really sure that all the data hasgone through.When a socket is closed,both sides agree by sending messages to each other that they will send no more data.This,itseemed to me was good enough,and after the handshaking is done,the socket should be closed.The problem is two-fold.First,there is no2:.BindException:Address already in use:connect的问题大概原因是短时间内new socket操作很多,而socket.close()操作并不能立即释放绑定的端口,而是把端口设置为TIME_WAIT状态,过段时间(默认240s)才释放,(用netstat-na可以看到),最后系统资源耗尽(windows上是耗尽了pool of ephemeral ports,这段区间在1024-5000之间;)避免出现这一问题的方法有两个,一个是调高你的web服务器的最大连接线程数,调到1024,2048都还凑合,以resin 为例,修改resin.conf中的thread-pool.thread_max,如果你采用apache连resin的架构,别忘了再调整apache;另一个是修改运行web服务器的机器的操作系统网络配置,把time wait的时间调低一些,比如30s。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

public class Test { public static void main(String[] args) { int[] a = {0,1,2,3}; System.out.println(a[4]); } } 异常信息如下: Exception in thread "main" ng.ArrayIndexOutOfBoundsException: 4 at com.darkmi.basic.Test.main(Test.java:7) ArithmeticExecption:算术异常类: 示例: package com.darkmi.basic; public class Test { public static void main(String[] args) { int a = 10 / 0; System.out.println(a); } } 异常信息如下: Exception in thread "main" ng.ArithmeticException: / by zero at com.darkmi.basic.Test.main(Test.java:6) ClassCastException:类型强制转换异常 示例: package com.dark0 次 发布时间: 2011-01-04 12:29:21 发布人: wanzhuanIT
来源: 网络转载 总结了几个 JAVA 中常见的 RuntimeException: NullPointerException:空指针异常类 示例: package com.darkmi.basic; public class Test { public static void main(String[] args) { System.out.println(toUpper(null)); } public static String toUpper(String str){ return str.toUpperCase(); } } 异常信息如下: Exception in thread "main" ng.NullPointerException at com.darkmi.basic.Test.toUpper(Test.java:11) at com.darkmi.basic.Test.main(Test.java:6) ArrayIndexOutOfBoundsException:数组下标越界异常 示例: package com.darkmi.basic;
public class Test { public static void main(String[] args) { testParse("aaa"); } public static void testParse(Object str){ Integer i = (Integer)str; } } 异常信息如下: Exception in thread "main" ng.ClassCastException: ng.String cannot be cast to ng.Integer at com.darkmi.basic.Test.testParse(Test.java:10) at com.darkmi.basic.Test.main(Test.java:6)
相关文档
最新文档