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三种异常处理方法

java三种异常处理方法Java是一种流行的编程语言,但是在编写程序时常常会遇到各种异常。
为了使程序更加健壮和稳定,我们需要使用异常处理机制。
Java中有三种异常处理方法:1. try-catch语句try-catch语句是最常用的异常处理方法。
它的基本语法如下: ```try {// 可能会抛出异常的代码} catch (Exception e) {// 异常处理代码}```在try块中,我们编写可能会抛出异常的代码。
如果这些代码抛出了异常,那么程序就会跳转到catch块中。
catch块中的代码会处理异常,可以输出异常信息,也可以进行其他操作。
2. throws关键字throws关键字可以将异常抛给调用该方法的上一级方法处理。
它的语法如下:```public void method() throws Exception {// 可能会抛出异常的代码}```在方法声明中使用throws关键字,表明该方法可能会抛出某种异常。
如果抛出了异常,异常将会被抛给该方法的调用者处理。
3. finally关键字finally关键字用于编写一段无论是否发生异常都会被执行的代码块。
它的语法如下:```try {// 可能会抛出异常的代码} catch (Exception e) {// 异常处理代码} finally {// 无论是否发生异常都会执行的代码}```在try-catch语句中使用finally块,可以确保无论是否发生异常,finally块中的代码都会被执行。
通常,finally块中会释放资源或者进行一些清理操作。
以上是Java中三种常见的异常处理方法。
在编写程序时,我们应该根据具体情况选择合适的方法处理异常,以保证程序的健壮性和稳定性。
exception方法

exception方法
Java中的异常是面向对象的一个概念,通过它可以处理运行时产生
的错误和异常状态。
它可以在运行过程中检测错误和异常,并采取必要的
措施来处理它们,这样就不会产生负面影响。
一般来说,Java的异常操作可以分为两类:可检查异常和运行时异常。
可检查异常必须捕获并处理,以保证程序的正常运行,而运行时异常
只需要在触发时出现提示信息即可。
当发生异常时,第一步要做的就是捕获它,这样才能确定异常的类型,从而根据不同的异常类型采取不同的处理方式。
Java中有两种捕获异常
的方式,一种是使用try-catch语句,另一种是使用throws关键字。
try-catch语句用于捕获异常并处理异常。
它有两个语句块,第一个
是try语句块,用于放置可能出现异常的代码,第二个是catch语句块,
用于捕获抛出的异常,同时可以对该异常进行处理。
另一种捕获异常的方法就是使用throws关键字。
throws关键字可以
将可抛出的异常(即可检查异常)声明在方法名称之后,这样,调用方法
的程序就需要创建try-catch块来捕获这些异常。
如果没有使用try-
catch块捕获这些异常,则会调用throws子句声明的方法的调用者捕获
该异常。
如果发生运行时异常,则不需要捕获此异常,因为在程序运行过程中,运行时异常是不能被捕获的。
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类循环依赖错误。
Exception

异常Java的异常处理涉及到5个关键字:try,catch,throw,throws,finally.异常处理流程由try,catch和finally3个代码块组成。
其中try代码块包含了可能发生异常的程序代码:catch代码块紧跟在try代码块后面,用来捕获并处理异常;finally代码块用于释放被占用的相关资源。
一.异常是java提供的处理程序中运行时错误的一种机制java程序在执行过程中如果出现异常,会生成一个异常类实例,该实例封装了异常的信息交给java运行时系统,这一过程叫抛出异常二.异常体系结构Error(系统的内部错误是程序员无法控制的错误,虚拟机错误)Object--Throwable(一般的Exception必须要显示的捕获)Exception(程序员可以控制的错误)RuntimeException(运行时异常,不需要显示捕获)只要是Throwable的实例或者它的子类的实例都能被throws(方法中),也能被throw(代码块中)Exception我能处理的Error系统断电,无法处理*RuntimeException--经常出的错误(可以逮它可以不逮它,比如一些小错误)try{ ...}catch(AtimeticException e){ ...}catch(Exception e){ ...} finally{}finally代码块不管try 语句块中是否抛出异常都回去执行。
throws 抛出异常,用于编译能通过,并没有真正处理异常throws 主要用于抛出检测异常。
throws 用于方法/构造的{ 前面,参数列表的后面(参数列表)[throws XXException] {一个方法可能会出现多种异常,throws子句允许声明抛出多个异常Public void method() throws SQLException,IOException{…}能处理的异常用try/catch,不能处理的(交其他人处理的)异常用throwsthrow 可以由程序员抛出异常对象,是一个语句。
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中常见错误和异常解决方法(打印)要点

ng.NullPointerException原因是:有空指针,有地址没赋值2.Exception in thread "main" ng.ArithmeticException: / by zero原因是除数是03.ArrayIndexOutOfBoundsException原因是:数组越界ng.NumberFormatException原因是:数字格式化有问题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中,会出现这个错误java国际化之Can't find bundle for base name1.初步学习最近在学习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论坛(/thread.jspa?threadID=660477&messageID=4231534)中找到了线索下面是帖子的内容: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="大家好"同样用上面的测试文件!结果如下:"?ó????"!乱码怎么回事啊!在百度里搜索后找到了答案有以为网友写的很清楚:/3885062.html 下面引用如下:原理Property文件中,使用的编码方式根据机器本身的设置可能是GBK或者UTF-8。
java常见异常处理方案

JAVA常见异常1. ng.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。
对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。
数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)2. ng.classnotfoundexception这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。
3. ng.arithmeticexception这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。
4. ng.arrayindexoutofboundsexception这个异常相信很多朋友也经常遇到过,异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java中的Exception
1异常相关概述
1.1 什么是异常
➢异常就是Java程序在运行过程中出现的错误。
➢前面接触过的空指针,数组越界,类型转换错误异常等
1.2 Throwable
➢Throwable 类是Java 语言中所有错误或异常的超类。
➢只有当对象是此类(或其子类之一)的实例时,才能通过JVM 或者throw 语句抛出。
1.3异常的继承体系
1.3 JVM默认是如何处理异常的?
➢jvm有一个默认的异常处理机制,就将该异常的名称、异常的信息、异常出现的位置打印在了控制台上,同时程序停止运行。
1.4 Java处理异常的两种方式
➢Java虚拟机处理
➢自己处理
1.5 为什么会有异常
因为你不知道未来会怎么样,需要做个准备(写代码也是,你需要对一些未知的东西做下处理),比如你去旅游,不知道会下雨还是出大太阳,你需要准备雨伞和帽子.如果下雨,我有雨伞可用,如果出大太阳,可以用帽子,也有可能天气刚刚好,雨伞和帽子都用不着,这叫白带。
1.6 回顾几个常见异常
2 try-catch
自己处理异常的两种方试
➢try…catch…finally
➢throws
2.1 try-catch异常处理方式
2.2 try-catch-catch 多个catch处理方式
2.3 try-catch-catch 多个异常-另一种写法
2.4 多个异常处理的一个注意事项
➢catch中父类的Exception只能放在最后面
➢catch一个原则,先由子类处理异常,子类不能处理异常,再由父类处理try {
//1.有可能出现数组越界异常
int[] arr = {1,2,3};
System.out.println(arr[1]);
//2.算术异常
int a = 10 / 2;
//3.空指针异常
int[] arr1 = null;
//NullPointerException np;
System.out.println(arr1[0]);
}catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界异常");
} catch (ArithmeticException e) {
System.out.println("算术异常");
} catch (Exception e) {
System.out.println("其它异常");
}
2.5 "编译时异常"和"运行时异常
➢Java中的异常被分为两大类:"编译时异常"和"运行时异常"。
➢编译时异常和运行时异常的区别
>所有的RuntimeException类及其子类被称为运行时异常
>其他的异常就是编译时异常
编译时异常
运行时异常
➢无需显示处理,也可以像编译时异常一样处理
2.6 Throwable有几个常用的方法
➢Exception是一个继承Throwable的子类
➢getMessage():获取异常信息,返回字符串。
➢toString():获取异常类名和异常信息,返回字符串。
3 throws
3.1 throws方式处理异常
➢实现方式:
1.定义方法时,在方法名后面添加throws 异常类名,相当于问题暴露出来让调用者去处理
main方法
3.2 throws和throw的区别throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
它表示抛出异常,由该方法的调用者来处理throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名,表示抛出异常
4 finally
4.1 try-catch-finally
finally的特点
➢finally的语句体一般情况下一定会执行
➢特殊情况:在执行到finally之前jvm退出了(比如System.exit(0))
finally的作用
4.2 面试题
final,finally和finalize的区别
➢final可以修饰类,不能被继承;修饰方法,不能被重写;修饰变量,只能赋值一次
➢finally是try语句中的一个语句体,不能单独使用,用来释放资源
➢finalize是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
【当对象从内存中消失会调用这个方法】
catch中关于return的面试题
如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前
还是return后?
答:会执行,finally的代码在return之前执行
5 自定义异常
5.1案例:自定义年龄异常
AgeException.class
Person.class
5.2自定义异常注意事项
3.如果子类方法内有异常发生,那么子类只能try,不能throws*/
5.3工作中如何使用异常处理
1.原则:如果自己能处理的问题,就用try-catch, 如果自己不能解决的问题,就throws
2.try-catch和throws的区别:
后续程序需要继续运行就用try
后续程序不需要继续运行就throws
3.如果JDK没有提供对应的异常,需要自定义异常。
5.4 案例:自定义一个登录异常
➢注意事项:什么时候方法后面不需要写throws?
方法内throw的异常对象如果是一个运行时异常,方法后面就不会写throws
5.5 案例:自定义一个非法字符异常。