java 负数异常_java基础之异常
一、Throw(抛出异常,让调用者处理)
Throw(将异常抛给调用者)
在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象。那么,抛出一个异常具体如何操作呢?
1. 创建一个异常对象。封装一些提示信息(信息可以自己编写)。
2. 需要将这个异常对象告知给调用者。怎么告知呢?怎么将这个异常对象传递到调用者处呢?通过关键字throw 就可以完成。
throw 异常对象。
throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。
public?class?ThrowDemo?{ ????
public?static?void?main(String[]?args)?{ ????????
//创建一个数组? ????????
int[]?arr?=?{2,4,52,2}; ????????
//根据索引找对应的元素? ????????
int?index?=?4; ????????
int?element?=?getElement(arr,?index); ? ????????
System.out.println(element); ????????
System.out.println("over");
}?
public?static?int?getElement(int[]?arr,int?index){? ???????
//判断??索引是否越界 ? ????????
if(index<0?||?index>arr.length‐1){ ?????????????
???/* ?????????????
判断条件如果满足,当执行完throw抛出异常对象后,方法已经无法继续运算。 ?????????????
这时就会结束当前方法的执行,并将异常告知给调用者。这时就需要通过异常来解决。? ??????????????
*/ ???????????
throw?new?ArrayIndexOutOfBoundsException("哥们,角标越界了~~~"); ????????} ????????
int?element?=?arr[index]; ????????
return?element; ????
}
}???
二、Throws(声明异常),,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常).
修饰符?返回值类型?方法名(参数)?throws?异常类名1,异常类名2…{???}
public?class?ThrowsDemo?{ ????
public?static?void?main(String[]?args)?throws?FileNotFoundException?{ ????????
read("a.txt"); ????
} ? ????
// 如果定义功能时有问题发生需要报告给调用者。可以通过在方法上使用throws关键字进行声明
public static void read(String path) throws FileNotFoundException {
if (!path.equals("a.txt")) {
//如果不是 a.txt这个文件
// 我假设 如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常 throw
throw new FileNotFoundException("文件不存在");
}
}
}
三、 捕获异常try…catch,捕获异常:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。
格式:
try{ ?????
编写可能会出现异常的代码
}catch(异常类型??e){ ?????
处理异常的代码 ????
//记录日志/打印异常信息/继续抛出异常
}
演示:
public?class?TryCatchDemo?{ ????
public?static?void?main(String[]?args)?{ ???????
try?{
//?当产生异常时,必须有处理方式。要么捕获,要么声明。 ????????????
read("b.txt"); ????????
}?catch?(FileNotFoundException?e)?{
//?括号中需要定义什么呢? ??????????
//try中抛出的是什么异常,在括号中就定义什么异常类型 ?? ????????????
System.out.println(e); ????????
} ????????
System.out.println("over"); ????
} ?
/** ?????
*?我们?当前的这个方法中?有异常??有编译期异常 ?????
*/ ????
public?static?void?read(String?path)?throws?FileNotFoundException?{ ????????
if?(!path.equals("a.txt"))?{
//如果不是?a.txt这个文件? ????????????
//?我假设??如果不是?a.txt?认为?该文件不存在?是一个错误?也就是异常??throw ???????????? ??
? throw?new?FileNotFoundException("文件不存在");
}
}
}
四、 ?nally 代码块:有一些特定的代码无论异常是否发生,都需要执行
?nally的语法: try...catch....?nally:自身需要处理异常,终还得关闭资源。
?
public?class?TryCatchDemo4?{ ????
public?static?void?main(String[]?args)?{ ????????
try?{ ????????????
read("a.txt"); ???????
}?catch?(FileNotFoundException?e)?{ ????????????
//抓取到的是编译期异常??抛出去的是运行期? ????????????
throw?new?RuntimeException(e); ????????
}?finally?{ ????????????
System.out.println("不管程序怎样,这里都将会被执行。"); ????????
} ????????
System.out.println("over"); ???
} ????
/* ?????
* ?????
*?我们?当前的这个方法中?有异常??有编译期异常 ?????
*/ ????
public?static?void?read(String?path)?throws?FileNotFoundException?{ ????????
if?(!path.equals("a.txt"))?{
//如果不是?a.txt这个文件? ???????????
//?我假设??如果不是?a.txt?认为?该文件不存在?是一个错误?也就是异常??throw ????????????
?throw?new?FileNotFoundException("文件不存在");
}
}
}
五、异常注意事项
多个异常使用捕获又该如何处理呢?
1. 多个异常分别处理。
2. 多个异常一次捕获,多次处理。
3. 多个异常一次捕获一次处理
try{ ?????
编写可能会出现异常的代码
}catch(异常类型A??e){??当try中出现A类型异常,就用该catch来捕获. ?????
处理异常的代码 ?????
//记录日志/打印异常信息/继续抛出异常
}catch(异常类型B??e){??当try中出现B类型异常,就用该catch来捕获. ?????
处理异常的代码 ?????
//记录日志/打印异常信息/继续抛出异常
}
六、自定义异常
原因:发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中 没有定义过,例如年龄负数问题,考试成绩负数问题.那 么能不能自己定义异常呢?
异常类如何定义:
1. 自定义一个编译期异常: 自定义类 并继承于 java.lang.Exception 。
2. 自定义一个运行时期的异常类:自定义类 并继承于 java.lang.RuntimeException 。
案例:
//?业务逻辑异常
public?class?RegisterException?extends?Exception?{ ????
/** ?????
*?空参构造 ?????
*/ ????
public?RegisterException()?{} ? ????
/** ?????
* ?????
*?@param?message?表示异常提示 ?????
*/ ????
public?RegisterException(String?message)?{ ????????
super(message); ????
}
}
java 负数异常_java基础之异常相关推荐
- java 捕获异常顺序_Java基础:异常捕获顺序
public voidtestException(){ int a[] = {1,2,3};int q = 0; try{ for(int i=0;i }catch(ArithmeticExcepti ...
- java 数字运算异常_Java基础之:异常及异常处理
Java基础之:异常及异常处理 我们将java程序执行过程中出现的不正常现象称为异常,例如:之前遇到的数组下标越界异常,空指针异常等等 执行过程中发生的异常事件分为两类: Error(错误):Java ...
- java 编写异常_Java基础编程之异常处理
Java异常类是对于程序中可能出现的错误或者异常的一种处理方式.在设计程序的过程中,对于可能出现的异常错误,比如说用户输入错误,设备错误,磁盘满了或者代码错误等等,通常采用异常处理的方式来进行处理可能 ...
- java 抛出异常的作用_Java 基础之异常抛出
Java 基础之异常抛出 Java,基础,异常抛出 在 Java 里,除了对异常的捕获外,你还可以抛出异常,还可以创造异常.抛出异常的作用就是告诉你的调用者,程序出现了不正常的情况了,得不要期望的结果 ...
- java 数据库 异常类型_Java基础 -- 常见异常
1.常见异常 Exception 类是 Throwable 类的子类.除了Exception类外,Throwable还有一个子类Error . 异常类有两个主要子类:IOException和Runti ...
- java exception用法_Java基础回顾_Exception异常使用详解
package 内部类异常包装器; public class 异常 { /** * 1.异常: * 有Error和Exception两个基本子类 * 2.Error: * Error表示恢复不是不可能 ...
- java lang runtimeexception什么意思_Java基础之异常
1.异常结构 Java中异常的父类接口为Throwable,它的两个实现类为Error和Exception.根据Javac对异常的分类可以将异常划分为两类,如下所示: 不可检查异常:Error 和 R ...
- java的数据异常_java的各种异常
展开全部 Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表 ...
- java常见检查异常_java中常见异常总汇,附解释
Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系 ...
最新文章
- php数据库操作类的调用优化,PHP PDO优化数据库操作类 多数据库驱动类
- ES6学习笔记二 新的声明方式和变量的解构赋值!
- SharePoint2010人员搜索
- LeetCode 540. 有序数组中的单一元素(Single Element in a Sorted Array) 42
- 获取触发事件的元素的ID
- 如何在 Linux 中找到你的 公网IP 地址
- 设计模式系列 - 装饰器模式
- Visual Studio Qt vs tools 下载教程及加速教程
- 京瓷4501i打印机扫描步骤_「硬件」如何使用打印机扫描文件传送到电脑本地?...
- Ubuntu中扩大虚拟机硬盘容量
- oracle同义词不再有效,ORA-00980: 同义词转换不再有效
- 大学四年的总结与感受
- android编辑视频,android 视频剪辑(亲测可用)
- 语音助手——评测指标
- 手机抓包获取数据,ROOT权限获取,xian鱼,taobao
- 牛顿迭代法leetcode
- Dubbo-02 20190315
- 目标检测经典论文——R-CNN论文翻译:Rich feature hierarchies for accurate object detection and semantic segmentation
- Linux下c语言文本方式文件读取
- 零基础教师成功转型数据分析师,它功不可没
热门文章
- 使用$.post和action或servlet交互 URL出现 http://localhost:8080/../[object%20Object] 错误的问题解决
- fastclick.js解决移动端(ipad)点击事件反应慢问题
- 一个由于springboot自动配置所产生的问题的解决
- U盘安装CentOS7的最终解决方案
- 如何git-cherry-pick仅更改某些文件?
- 文件的属性 计算机知识,计算机基础知识文件的属性(二)
- Eclipse中导入maven项目 maven update project报“Cannot nest ‘xx/src/main/resources‘ inside ‘xx/src ……”
- SpringMCV整合配置文件
- Android:Day03_完美登录案例(使用流和文件来保存登录信息)
- 机器人SLAM建图地图类型讨论