java中常见的五种异常

合集下载

Java常见异常种类

Java常见异常种类

Java常见异常种类------------------------------第⼀种理解----------------------1、什么是异常结构不佳的代码不能运⾏,这是Java的基本理念。

发现错误的理想时机是在编译期。

然⽽,编译器并不能发现所有的错误,余下的问题就需要在程序运⾏时解决。

这就需要错误能通过某种⽅式,把适当的信息传递给特定的接收者处理。

Java中的异常处理的⽬的在于通过使⽤少量的代码来简化⼤型、可靠的程序的⽣成,通过此⽅式让你的应⽤中没有未处理的错误,⽽且它还带来了⼀个明显的好处:降低错误处理代码的复杂度。

异常,根据字⾯理解,有意外之意。

把它置于代码层⾯来理解,即阻⽌了当前⽅法或作⽤域继续执⾏。

在Java中,异常被当做对象来处理,其基类是Throwable。

2、Java中的异常类型 Java从Throwable直接派⽣出Exception和Error。

其中Exception是可以抛出的基本类型,在Java类库、⽅法以及运⾏时故障中都可能抛出Exception型异常。

Exception表⽰可以恢复的异常,是编译器可以捕捉到的;Error表⽰编译时和系统错误,表⽰系统在运⾏期间出现了严重的错误,属于不可恢复的错误,由于这属于JVM层次的严重错误,因此这种错误会导致程序终⽌执⾏。

Exception⼜分为检查异常和运⾏时异常。

异常类的结构层次图如下: 典型的RuntimeException(运⾏时异常)包括NullPointerException, ClassCastException(类型转换异常),IndexOutOfBoundsException(越界异常), IllegalArgumentException(⾮法参数异常),ArrayStoreException(数组存储异常),AruthmeticException(算术异常),BufferOverflowException(缓冲区溢出异常)等; ⾮RuntimeException(检查异常)包括IOException, SQLException,InterruptedException(中断异常-调⽤线程睡眠时候),NumberFormatException(数字格式化异常)等。

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中常见的NullPointerException异常

java中常见的NullPointerException异常

java中常见的NullPointerException异常下面列出了我们学习java时常出现的NullPointerException异常,以及它的解决办法1,空指针错误ng.NullPointerException 使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的JAVA数据类型(double,float,boolean,char,int,long)一般不会引起空指针异常。

由此可见,空指针异常主要跟与对象的操作相关。

下面先列出了可能发生空指针异常的几种情况及相应解决方案:不管对象是否为空就直接开始使用。

(JSP)代码段1:out.println(request.getParameter("username"));描述:代码段1的功能十分简单,就是输出用户输入的表域"username"的值。

说明:看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什么问题。

但是,如果某个用户在输入数据时并没有提供表单域"username"的值,或通过某种途径绕过表单直接输入时,此时request.getParameter("username")的值为空(不是空字符串,是空对象null。

),out对象的println方法是无法直接对空对象操作,因此代码段1所在的JSP页面将会抛出"ng.NullPointerException"异常。

即使对象可能为空时,也调用ng.Object或Object对象本身的一些方法如toString(), equals(Object obj)等操作。

(JSP)代码段2:String userName =request.getParameter("username");If (userName.equals("root")) {....}描述:代码段2的功能是检测用户提供的用户名,如果是用户名称为"root"的用户时,就执行一些特别的操作。

11-软件工程第一章作业

11-软件工程第一章作业

java常见异常整理(1)_爱琦13百度首页| 百度空间| 登录爱琦13朋友多遍天下主页博客相册|个人档案|好友查看文章java常见异常整理(1)2007年02月09日星期五23:18大中小异常javax.servlet.jsp.JspException: Cannot retrieve mapping for action/Login (/Login是你的action名字)可能原因action没有再struts-config.xml 中定义,或没有找到匹配的action,例如在JSP 文件中使用<html:formaction="Login.do".将表单提交给Login.do处理,如果出现上述异常,请查看struts-config.xml中的定义部分,有时可能是打错了字符或者是某些不符合规则,可以使用strutsconsole工具来检查。

----------------------------------------------------------------------------------------------------------------- 异常org.apache.jasper.JasperException: Cannot retrieve definition forform bean null可能原因这个异常是因为Struts根据struts-config.xml中的mapping没有找到action期望的formbean。

大部分的情况可能是因为在form-bean中设置的name属性和action中设置的name属性不匹配所致。

换句话说,action和form都应该各自有一个name属性,并且要精确匹配,包括大小写。

这个错误当没有name属性和action关联时也会发生,如果没有在action中指定name属性,那么就没有name属性和action相关联。

浅析Java异常处理机制及应用

浅析Java异常处理机制及应用

浅析Java异常处理机制及应用摘要:Java异常处理机制是Java编程语言中最为重要的机制之一,它可以在代码中处理各种类型的异常。

本文将对Java异常处理机制进行浅析,并从应用层面探讨一些常见的Java异常处理方法。

关键词:Java,异常处理,应用正文:一、Java异常处理机制Java异常处理机制是Java编程语言中最为重要的机制之一。

在Java语言中,异常是指一个程序运行时产生的意外情况,可以是代码中的错误,也可以是由于外部环境因素导致的错误。

Java提供了一整套异常处理机制,可以帮助开发者处理各种类型的异常。

在Java中,异常通常被定义为继承自Throwable类的任意一个子类。

常见的异常类型包括RuntimeException、IOException、ClassNotFoundException、ArithmeticException等等。

Java中异常的处理主要分为两种方式:try-catch块和throws语句。

try-catch块是一种捕捉异常的方法,其基本语法结构如下:```try {// 可能会抛出异常的代码块} catch (type1 e1) {// 处理type1类型异常的代码块} catch (type2 e2) {// 处理type2类型异常的代码块} finally {// 不管是否发生异常,都会执行的代码块}```throws语句是一种抛出异常的方法,其基本语法结构如下:```public void methodName() throws ExceptionType {// 可能会抛出异常的代码块}```二、Java异常处理的应用Java异常处理机制应用广泛,以下是应用层面探讨一些常见的Java异常处理方法。

1、基于try-catch块的异常处理try-catch块是Java中最基本的异常处理方法。

它可以在程序运行时捕捉异常,并且根据不同的异常类型采取不同的处理方法。

异常抛出

异常抛出

异常:一.Java异常类层次结构图:1.在Java 中,所有的异常都有一个共同的祖先Throwable(可抛出)。

2.Throwable:有两个重要的子类:Exception(异常)和Error(错误)Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)当JVM 不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError3.注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。

4. Java的异常(包括Exception和Error)分为可查的异常(checked exceptions)和不可查的异常(unchecked exceptions)。

可查异常(编译器要求必须处置的异常):除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。

这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。

不可查异常(编译器不要求强制处置的异常):包括运行时异常(RuntimeException与其子类)和错误(Error)。

5. Exception 这种异常分两大类运行时异常和非运行时异常(编译异常)。

程序中应当尽可能去处理这些异常。

运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。

这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

非运行时异常(编译异常):是RuntimeException以外的异常,类型上都属于Exception 类及其子类。

实验五 异常

实验五  异常

桂 林 电 子 科 技 大 学《Java 应用开发》 实 验 报 告实验名称 异常 计算机科学与工程学院计算机科学与技术专 业 班 第 实 验 小 组 姓 名 学 号 实 验 日 期 2015 年 11月 7 日实验五 异常一、 实验目的1、掌握异常的概念、作用、分类和进行异常处理的语法结构。

2、了解系统异常类的体系和系统定义的常见标准异常。

3、掌握用户自定义异常类的定义和抛出异常的方法。

4、通过掌握异常来分析调试程序的编译错误和编写更健壮的程序。

二、 实验内容1、标准异常:设计一个程序,使得其运行时,可以接受用户输入若干个整数并依次存入数组中,不限定输入数的个数,使得在输入数的个数超过数组的实际大小时产生数组下标越界异常(ArrayIndexOutOfBoundsException )。

程序代码中“不需要”对异常进行捕获处理,观察异常产生时程序运行是否被中断,编译器产生了怎样的提示。

2、自定义异常:设计一个新的程序或者完善题目1的程序,使得其运行时,可以接受用户输入若干个数并依次存入数组中。

要求用户输入的整数必须大于0小于100。

如果不符合这个范围则抛出异常。

请自定义一个异常类来表示这种情况,并在用户的输入不符合要求时抛出该异常。

三、 分析与设计1. 定义一个大小为5的整形数组int number [] = new int [5];Scanner sr = new Scanner(System.in );for (int i = 0; i <10; i ++)//循环次数大于5, {System.out .print("请输入一个数字");number [i ] = sr .nextInt();}当输入第六个数的时候会提示错误指导教师意见: 成绩 教 师 签 名2. 可以自己定义输入数字的个数System.out.println("依次输入"+a.length+"个整数!");try{for(int i=0;i<a.length;i++)even( a[i]=input.nextInt() );System.out.println("successfully input!");}当输入的数字大于自定义的数是,会给出异常。

Java开发最容易写的10个bug

Java开发最容易写的10个bug

Java开发最容易写的10个bug原⽂链接:那个谁,今天⼜写 bug 了,没错,他说的好像就是我。

作为 Java 开发,我们在写代码的过程中难免会产⽣各种奇思妙想的 bug ,有些 bug 就挺让⼈⽆奈的,⽐如说各种空指针异常,在 ArrayList 的迭代中进⾏删除操作引发异常,数组下标越界异常等。

如果你不⼩⼼看到同事的代码出现了我所描述的这些 bug 后,那你就把我这篇⽂章甩给他你甩给他⼀篇⽂章,并让他关注了⼀波cxuan,你会收获他在后⾯像是如获⾄宝并满眼崇拜⼤神的⽬光。

废话不多说,下⾯进⼊正题。

错误⼀:Array 转换成 ArrayListArray 转换成 ArrayList 还能出错?这是哪个笨。

等等,你先别着急说,先来看看是怎么回事。

如果要将数组转换为 ArrayList,我们⼀般的做法会是这样List<String> list = Arrays.asList(arr);Arrays.asList() 将返回⼀个 ArrayList,它是 Arrays 中的私有静态类,它不是 java.util.ArrayList 类。

如下图所⽰Arrays 内部的 ArrayList 只有 set、get、contains 等⽅法,但是没有能够像是 add 这种能够使其内部结构进⾏改变的⽅法,所以 Arrays 内部的 ArrayList 的⼤⼩是固定的。

如果要创建⼀个能够添加元素的 ArrayList ,你可以使⽤下⾯这种创建⽅式:ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));因为 ArrayList 的构造⽅法是可以接收⼀个 Collection 集合的,所以这种创建⽅式是可⾏的。

错误⼆:检查数组是否包含某个值检查数组中是否包含某个值,部分程序员经常会这么做:Set<String> set = new HashSet<String>(Arrays.asList(arr));return set.contains(targetValue);这段代码虽然没错,但是有额外的性能损耗,正常情况下,不⽤将其再转换为set,直接这么做就好了:return Arrays.asList(arr).contains(targetValue);或者使⽤下⾯这种⽅式(穷举法,循环判断)for(String s: arr){if(s.equals(targetValue))return true;}return false;上⾯第⼀段代码⽐第⼆段更具有可读性。

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

java中常见的五种异常
1.ClassCastException(类转换异常)
数据类型转换错误,比如有个String temp="abc"; 如果设为(int)temp就会报错了,因为它们类型不一样,但是设为(object)temp就可以,因为object是它们的父类
2.IndexOutOfBoundsException(数组越界)
这个异常我们在操作数组的时候会经常遇到,异常的解释是“数组下标越界“,现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。

3.NullPointerException(空指针)
这个异常在编程时也经常遇到,异常的解释是“程序遇上了空指针“,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在调用数组这些操作中,对数组操作中出现空指针,很多情况下是一些刚开始学习编程的人常犯的错误,即把数组。

相关文档
最新文档