处理异常方式try_catch_finally, throws,throw
如何处理 Exception 的异常:
抓抛模型:1.抓:异常的处理,有两种方式①try-catch-finally ②throws+异常类型
2.抛:一旦执行过程中出现异常,会抛出一个异常类的对象(自动的抛出 vs 手动的抛出(throw+异常类对象))
异常处理方式一:try_catch_finally
package com.aff.excep; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; import org.junit.Test; /*
处理Exception的异常
java提供的异常处理的抓抛模型:
1. "抛" 执行代码,出现异常,就会在异常的代码处生成一个对应异常的类的对象, 并将此对象抛出
一旦抛出此异常的对象, 那么程序就终止运行,此异常的对象抛给方法的调用者
2. "抓" 抓住上一步抛出来的异常类的对象。
异常处理的方式:
java提供了两种方式用来处理一个异常类的对象
处理方式一:try{
//可能出现异常的代码
}catch(Exception e1){
//处理的方式1
}catch(Exception e2){
// 处理的方式2
} finally{
//一定执行的代码
}
注:1.try内生命的变量, 类似于局部变量。出了try{ }语句,就不能被调用
2.finally是可选的。
3.catch语句内部是对异常对象的处理
getMessage(); printStackTrace();
4.可以有多个actch语句,try中抛出的异常类对象从上往下匹配catch中的异常类的类型,
一旦满足,就执行catch中的代码,执行完,就跳出其后的多条catch语句
5.如果异常处理了,其后面的代码可以执行了
6.若catch 中多个异常类型是 "并列" 关系,谁上谁下都可以
若catch中多个异常类型的 "包含" 关系,须将子类放在父类的上面,进行处理,否则报错
7.finally 中存放的一定是会被执行的代码,不管try中,catch中是否有异常未被处理,以及是否有return
8.try- catch是可以嵌套的 对于运行时异常来说,可以不显式的进行处理,
对于编译时异常来说,必须要显式的进行处理 */
public class TestException1 {
@Test
public void test6() {
FileInputStream fis = null;
try {
fis = new FileInputStream(new File("heel.txt"));
int b;
while ((b = fis.read()) != -1) {
System.out.println((char) b);
}
} catch (FileNotFoundException e1) {// e1相当于局部变量, 下面的exception也可以使用e1
// System.out.println(e1.getMessage());
System.out.println("找不到文件");
} catch (IOException e1) {
System.out.println(e1.getMessage());
} finally {
// 一定会执行的代码
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} @Test
public void test2() {
try {
int[] i = new int[10];
// System.out.println(i[10]);
System.out.println(i[-10]);
} catch (Exception e) {
// e.printStackTrace();
System.out.println("出现异常");
// System.out.println(e.getMessage());
} finally {
// 一定会执行的代码
}
}
}
异常处理方式一:throws ,向上抛 最后用try-catch 解决
package com.aff.excep; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; /*
异常处理方式二:在方法的声明处,显示的抛出该异常对象的类型
格式:如public static void method2() throws IOException{ }
当在此方法内部出现异常的时候回抛出一个异常类的对象,抛给方法的调用者
异常的对象可以逐层向上抛,直至main中,当然在向上抛的过程中,可以再通过try-catch-finally进行处理 */
public class TestException2 {
public static void main(String[] args) {
try {
method2();
} catch (IOException e) {
e.printStackTrace();
}
} public static void method2() throws IOException{
method1();
} public static void method1() throws IOException {
FileInputStream fis = new FileInputStream(new File("heel.txt"));
int b;
while ((b = fis.read()) != -1) {
System.out.println((char) b);
}
}
}
手动的抛出异常:
package com.aff.excep;
//1.手动的抛出一个异常
//2.抛出的异常类型若是RuntimeException,可以不显示的处理
//若是一个Exception,必须要显式的处理
public class TestCircle {
public static void main(String[] args) {
Circle c1 = new Circle(2.1);
Circle c2 = new Circle(2.1);
try {
System.out.println(c1.comparTo(c2));
System.out.println(c1.comparTo(new String("AA")));
} catch (Exception e) {
e.printStackTrace();
}
}
} class Circle {
private double radius; public double getRadius() {
return radius;
} public void setRadius(double radius) {
this.radius = radius;
} public Circle(double radius) {
super();
this.radius = radius;
} // 比较两个圆的半径的大小
public int comparTo(Object obj) throws Exception {
if (this == obj) {
return 0;
} else if (obj instanceof Circle) {
Circle c = (Circle) obj;
if (this.radius > c.radius) {
return 1;
} else if (this.radius == c.radius) {
return 0;
} else {
return -1;
}
} else {
// return -2;
//throw new RuntimeException("传入的类型有误");//运行时异常编译不显示错误
throw new Exception("传入的类型有误");
}
}
}
处理异常方式try_catch_finally, throws,throw的更多相关文章
- “全栈2019”Java异常第十章:throw与throws区别详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- java-异常-编译时检测异常和运行时异常区别(throws和throw区别)
1 package p1.exception; 2 /* 3 * 对于角标是整数不存在,可以用角标越界表示, 4 * 对于负数为角标的情况,准备用负数角标异常来表示. 5 * 6 * 负数角标这种异常 ...
- JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义? 在try块中可以抛 出异常吗?
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类, 并提供了良好的接口. 在 Java中,每个异常都是一个对象,它是 Throwable 类或其它子类的实例.当一个方法出 ...
- java中异常的抛出:throw throws
java中异常的抛出:throw throws Java中的异常抛出 语法: public class ExceptionTest{ public void 方法名(参数列表) throws 异常列表 ...
- 【Java面试题】22 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
throws是获取异常throw是抛出异常try是将会发生异常的语句括起来,从而进行异常的处理,catch是如果有异常就会执行他里面的语句,而finally不论是否有异常都会进行执行的语句. thro ...
- “全栈2019”Java异常第八章:throw关键字详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- Java 异常处理 try catch finally throws throw 的使用和解读(一)
//最近的一个内部表决系统开发过程中,//发现对异常处理还存在一些模棱两可的地方,//所以想着整理一下//主要涉及到://1.try catch finally throws throw 的使用和解读 ...
- Java之异常的处理(throws)
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java. ...
- throws,throw,try,catch,finally 分别代表什么 意义?
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口. 在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例.当一个方法出现异常后便 抛出一个异 ...
随机推荐
- python(索引/切片)
一.索引 1.索引值从左到右-->从0开始,索引值从右到左-->从-1开始 取值格式var[index] >>> name = "xinfangshuo&quo ...
- Jenkins 构建 Jmeter 项目之源代码管理(SVN)
1.查看项目创建中是否又 svn 插件,没有的话下载插件 subversion 2.配置 svn 源代码管理,如下图(testcases 目录下包含 build.xml 和脚本文件) 3.查看 Jen ...
- Effective C++学习记录
Effective C++算是看完了,但是并没有完全理解,也做不到记住所有,在此记录下55个条款及条款末的"请记住". 让自己习惯C++ 条款01:视C++为一个语言联邦 ① C ...
- Centos7.x 装机优化
Linux 服务器装机后优化 参考 https://blog.csdn.net/u010133338/article/details/81055475 优化初始化脚本 vim init_optimiz ...
- 谷歌OKR指导手册 (译)
这是一本关于 OKR 迷你小册子,名为<google OKR playbook>,由 www.whatMatters.com 网站发布. 该网站由John Doerr 团队经营, 而Joh ...
- Jmeter系列(9)- jmeter插件入门篇
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 jmeter4.0以上,如现在最 ...
- Node.js中模块加载机制
1.模块查找规则-当模块拥有路径但没有后缀时:(require(‘./find’)) require方法根据模块路径查找模块,如果是完整路径,直接引入模块: 如果模块后缀省略,先找同名JS文件,再找同 ...
- 使用Proteus模拟操作HDG12864F-1液晶屏
在Proteus中模拟了89C52操作HDG12864F-1液晶屏,原理图如下: 一.HDG12864F-1官网信息 该液晶屏是Hantronix的产品,官网上搜索出这个型号是系列型号中的一种,各种型 ...
- Coursera课程笔记----计算导论与C语言基础----Week 4
感性认识计算机程序(Week 4) 引入 编程序 = 给计算机设计好运行步骤 程序 = 人们用来告诉计算机应该做什么的东西 问题➡️该告诉计算机什么?用什么形式告诉? 如果要创造一门"程序设 ...
- 可能是把 Java 接口讲得最通俗的一篇文章
读者春夏秋冬在抽象类的那篇文章中留言,"二哥,面试官最喜欢问的一个问题就是,'兄弟,说说抽象类和接口之间的区别?',啥时候讲讲接口呗!" 对于面向对象编程来说,抽象是一个极具魅力的 ...