首页 > 编程语言 >【Java基础】异常处理机制:try-catch-finally

【Java基础】异常处理机制:try-catch-finally

时间:2022-09-28 19:11:46浏览次数:52  
标签:Java System try println finally catch 异常

1.异常对象生成(抛出异常)

Java程序的执行过程中如果出现异常,就会生成一个异常类的对象,该异常对象将会被提交给Java运行时系统。

  • 虚拟机自动生成异常对象:虚拟机检测到程序发生了问题,在后台自动创建异常对象,并交给Java运行时系统(抛出)。

  • 开发人员手动创建异常对象:Exception exception = new ClassCastException(); 可以不交给Java运行时系统(不抛出)。就是一个普通对象。

2.处理异常对象(捕获异常catch)

方法2内抛出异常 -> 抛给调用的方法1->...直到被处理

void method1(){
 method2();
}

void method2(){
	System.out.println("产生异常");
}

如果抛到main()方法,并且main也不处理,则程序运行终止。

3.try-catch-finally

(1)try
把可能出现异常的代码用try括起来
image

(2)catch
捕获到ClassCastException异常,异常对象名为e。括号内是处理该异常。
可以写多个catch,参数可以是ClassCastException,也可以是它的父类。
image

异常对象e可以调用成员变量和方法
image

常用方法
getMessage() 获取异常信息,返回字符串。
printStackTrace() 获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void。

catch (ClassCastException e) {
	e.printStackTrace();  //控制台显示异常
	System.out.println(e.getMessage()); //java.lang.Object cannot be cast to java.lang.String
}

(3)finally
finally是可选的,最后执行的代码。
不论是否有异常,不论catch语句中是否有return,finally块中的语句都会被执行。
如果catch中有return,则先执行finally块中代码,再返回catch中的return。
如果catch和finally中都有return,catch中的return会执行(表达式)不会返回,只返回finally中的return。

public void talk(String word) {
	System.out.println(word);

	try {
		Object o = new Object();
		String str = (String) o;
	} catch (IndexOutOfBoundsException e) {
		System.out.println("处理数组下标越界异常");
	} catch (ClassCastException e) {
		System.out.println("处理类型转换异常");

	} catch (NullPointerException e) {
		System.out.println("处理空指针异常");
	} finally {
		System.out.println("你写错代码了");
	}
	word += "~";
}

执行结果

English
处理类型转换异常
你写错代码了

1.catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错。小的写在上面。
2.try-catch-finally结构可以嵌套

标签:Java,System,try,println,finally,catch,异常
From: https://www.cnblogs.com/zhishu/p/16711293.html

相关文章

  • JAVA Spring学习笔记 ------Bean
    Bean容器为什么要使用Bean容器因为希望减少new的操作,这样当我们的类名发生改变时,影响会降到最小Bean相当于一个管家原来需要我们自己new的对象现在统统通过Bean来创建......
  • JAVA操作Excel (POI)
    packagecom.quantum.utils;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.ss.usermodel.*;importorg.apache.poi.xssf.usermodel.XSSFW......
  • JAVA Spring学习笔记------注解开发
    注解开发可以在对应的类中配置Bean具体方法如下:利用@Component来声明当前类为Bean@Component("userDaoimpl")//Reposity和component效果一样//spring对于不同的层......
  • JAVA Spring学习笔记------Spring整合Mybatis
    Spring整合Mybatis首先看一下项目目录   因为以前所有的知识点都在一个模块里,而且目录比较混乱所以对模块重构了一下首先我们要在pom.xml文件中声明所需要的依赖......
  • java异常
    西二旗是一个恐怖的地铁站,光排队得排很久。只要写代码就存在bug,唯一一个不出bug得方法就是不写代码。异常:在程序的运行过程中,出现的不正常情况叫做异常.注意:1.相同的代......
  • java.lang.RuntimeException: Unable to instantiate class java.lang.Integer with v
    代码为@Value("${address.count}")privateIntegercount;单元测试中代码修改为@InjectableprivateIntegercount=1000;单元测试中类型没法自动转换,......
  • linux系统下运行java项目,(做笔记)
    原链接处:Linuxjar包后台运行-阿里云开发者社区(aliyun.com) Linuxjar包后台运行2016-04-10 1755简介: Linux运行jar包命令如下:方式一:java -jarshareniu.ja......
  • Java11安装(win11)
    下载JDK解压版本下载后解压,并放到一个没有中文路径的目录,如图所示:配置Java环境变量以Windows11系统为例,打开设置,搜索“环境”,点击“编辑系统环境变量”,如图所示:点击......
  • Java Script 原型链原理
    所有对象都有隐式原型;原型也是对象,也有隐式原型.functionUser(){}console.log(User.prototype);functionUser(){}varu=newUser();console.log(u.hasOwnProper......
  • java常见面试补录
    ***外卖系统:(业务讲解)。前端:用户下单;后端:管理员;拦截器。提示:业务介绍;涉及哪些模块;业务流程(哪些角色做什么事)。*、Mysql,redis:mysql异步场景时,Mysql无法写入。(......