异常概述及自定义异常类
来源:互联网 发布:淘宝网页版电脑版登录 编辑:程序博客网 时间:2024/06/05 04:52
/*1.异常:就是程序在运行时出现不正常情况。异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述。并封装成对象。 其实就是java对不正常情况进行描述后的对象体现。对于问题的划分:两种:一种是严重的问题,一种是非严重的问题。 对于严重的,java通过Error类进行描述。 对于Error一般不编写针对性代码对其进行处理。 对于非严重的,java通过Exception类进行描述。 对于Exception可以使用针对性的处理方式进行处理。无论Error或者Exception都具有一些共性内容。比如:不正常情况的信息,引发原因。Throwable //所有异常和错误的超类 |--Error |--Exception2.异常的处理java提供了特有的语句进行处理try{ 需要被检测的代码;}catch(异常类 变量){ 处理异常的代码;(处理方式)}finally{ 一定会执行的语句;}3.对捕获到的异常对象进行常见方法操作。 String getMessage():获取异常的信息。 String toString():异常名称:异常信息 void printStackTrace():异常名称,异常名称,异常出现位置-->jvm默认的异常处理机制就是调用这个方法,打印异常的堆栈的跟踪信息。 在功能上通过throws的关键字声明了该功能可能出现的问题。--->抛出后必须要捕获问题或者再次抛出,否则编译失败。最上层抛给jvm在函数上声明异常。便于提高安全性,让调用进行处理。不处理编译失败。对多异常的处理。1.声明异常时建议声明更为具体的异常,这样处理的可以更具体。2.对方声明几个异常,就对应几个catch块。 如果多个catch块的异常出现继承关系,父类异常catch要放在最下面。 当出现未声明的异常出现时,要把程序停掉。建议在进行catch处理时,catch一定要定义具体处理方式。不要简单定义一句e.printStackTrace(),也不要简单的输出一条语句。真正出现问题--->文件记录异常信息--->日志*//*自定义异常类:因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象。将特有的问题。进行自定义的异常封装。需求:在除数时不能为负数,那么就需要对这个问题进行自定义的描述。当在函数内部出现了throw抛出异常,那么就必须给出对应的处理动作。要么在内部try catch处理。要么在函数上声明让调用者处理。!!!!!!特殊的一种:RuntimeException 如果在函数内抛出该异常,只需要throw 对象,函数上不用声明,编译一样通过 如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过。 之所以不用在函数上声明,是因为不需要让调用者处理。 当该异常发生,希望程序停止。因为在运行时,出现无法继续的运算情况,希望程序停止后 程序员对代码进行修正。一般情况下,函数内出现异常,函数上需要声明。发现打印的结果中只有异常的名称,却没有异常信息。因为自定义的异常并未定义信息。如何定义异常信息?因为父类中已经把异常信息的操作都完成了。所以子类中只要在构造时将异常信息传递给父类通过super语句。那么就可以直接通过getMessage方法获取自定义的异常信息。自定义异常:必须是自定义类继承Exception。继承Exception原因:异常体系有一个特点:因为异常类和异常对象都需要被抛出。他们都具备可抛性。这个可抛性是Throwable这个体系中的独有特点。只有这个体系中的类和对象才可以被throws和throw操作。throws和throw的区别:throws使用在函数上。throw使用在函数内。throws后面跟异常类,可以跟多个,用逗号隔开。throw后面跟异常对象。自定义异常时:如果该异常的发生无法继续运行下去就让自定义异常继承RuntimeException对于异常分两种:1.编译时被检测的异常--->要么继续抛,要么try2.编译时不被检测的异常(运行时异常。RuntimeException以及其之类)--->里面抛,外面不用声明。--->程序停止*/class FuShuException extends RuntimeException{ private int value; FuShuException(){ super(); } FuShuException(String msg){ super(msg); } FuShuException(String msg,int value){ super(msg); this.value=value; } public int getValue(){ return value; }}class Demo{ int div(int a,int b)throws FuShuException{//声明 if(b<0) throw new FuShuException("出现了除数时负数的情况",b);//手动通过throw关键字抛出自定义异常对象 //抛出后要继续抛出或者捕获 return a/b; }}class ExceptionDemo_zdy{ public static void main(String[] args) { Demo d = new Demo(); //try //{ int x = d.div(5,-5); System.out.println("x="+x); //} //catch (FuShuException e) //{ // System.out.println(e.toString()); // System.out.println("错误的负数是:"+e.getValue()); //} System.out.println("over"); }}
0 0
- 异常概述及自定义异常类
- 捕获异常及自定义异常类
- Java异常抛出及自定义异常
- 异常详解及自定义异常和注意事项
- Java异常体系介绍及自定义异常
- java中的异常抛出及自定义异常
- JAVA基础再回首(十九)——异常的概述、Try…Catch、多异常处理、Throws、throw、finally、自定义异常及异常的注意事项
- 异常----概述
- 异常概述、try-catch、异常声明、多异常处理、自定义异常、RuntimeException
- 自定义异常及堆栈结构
- ”戏“说java—异常及异常处理概述
- SQL Server 自定义异常及抛出自定义异常
- C# 自定义异常类
- 自定义异常处理类
- 自定义异常类
- c# 自定义异常类
- Java自定义异常类
- 自定义异常类
- Android 图片信息获取--ExifInterface类
- A continuous relaxation labeling algorithm for Markov random fields
- C++实现哈希表的创建,销毁,键值插入与删除
- Ngnix 负载均衡简单搭建
- iOS笔记21
- 异常概述及自定义异常类
- iOS 控制器的创建以及管理
- 黑马程序员—Java基础—类的加载和反射
- JAVA常见的异常类型
- 设计师配色宝典:教你从零开始学配色
- SAP销售订单关联的生产成本核算
- Linux系统下安装ngnix
- iOS笔记22
- mac 安装了vmware fushion 误删文件后说文件找不到