【软帝学院】Java异常处理的机制,语法规则和技巧

一、Java异常处理机制

对于可能出现异常的代码,有两种处理办法:

1、在方法中用try...catch语句捕获并处理异常,catach语句可以有多个,用来匹配多个异常。

2、对于处理不了的异常或者要转型的异常,在方法的声明处通过throws语句抛出异常。

如果每个方法都是简单的抛出异常,那么在方法调用方法的多层嵌套调用中,Java虚拟机会从出现异常的方法代码块中往回找,直到找到处理该异常的代码块为止。然后将异常交给相应的catch语句处理。

如果Java虚拟机追溯到方法调用栈最底部main()方法时,如果仍然没有找到处理异常的代码块,将按照下面的步骤处理:

1、调用异常的对象的printStackTrace()方法,打印方法调用栈的异常信息。

2、如果出现异常的线程为主线程,则整个程序运行终止;如果非主线程,则终止该线程,其他线程继续运行。

还有一点,不可忽视:finally语句在任何情况下都必须执行的代码,这样可以保证一些在任何情况下都必须执行代码的可靠性。finally语句唯一不被执行的情况是方法执行了System.exit()方法。

System.exit()的作用是终止当前正在运行的 Java 虚拟机。finally语句块中不能通过给变量赋新值来改变return的返回值,也建议不要在finally块中使用return语句,没有意义还容易导致错误。

二、异常处理的语法规则:

1、try语句不能单独存在,可以和catch、finally组成 try...catch...finally、try...catch、try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个,try、catch、finally这三个关键字均不能单独使用。

2、try、catch、finally三个代码块中变量的作用域分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。

3、多个catch块时候,Java虚拟机会匹配其中一个异常类或其子类,就执行这个catch块,而不会再执行别的catch块。

4、throw语句后不允许有紧跟其他语句,因为这些没有机会执行。

5、如果一个方法调用了另外一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。

三、Java异常处理的原则和技巧

1、避免过大的try块,不要把不会出现异常的代码放到try块里面,尽量保持一个try块对应一个或多个异常。

2、细化异常的类型,不要不管什么类型的异常都写成Excetpion。

3、catch块尽量保持一个块捕获一类异常,不要忽略捕获的异常,捕获到后要么处理,要么转译,要么重新抛出新类型的异常。

4、不要把自己能处理的异常抛给别人。

5、不要用try...catch参与控制程序流程,异常控制的根本目的是处理程序的非正常情况。

更多java知识分享,java资料,可以关注评论我,大家一起学习进步!

原文地址:https://www.cnblogs.com/heqingxiaohuo/p/12104183.html

时间: 2024-11-08 09:23:25

【软帝学院】Java异常处理的机制,语法规则和技巧的相关文章

软帝学院教你Java Applet基础

软帝学院教你Java Applet基础 applet是一种Java程序.它一般运行在支持Java的Web浏览器内.因为它有完整的Java API支持,所以applet是一个全功能的Java应用程序. 如下所示是独立的Java应用程序和applet程序之间重要的不同: Java中applet类继承了 java.applet.Applet类 Applet类没有定义main(),所以一个 Applet程序不会调用main()方法, Applets被设计为嵌入在一个HTML页面. 当用户浏览包含Appl

软帝学院教你用java编写计算器(二)

软帝学院教你用java编写计算器(二) import java.awt.BorderLayout; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.

软帝学院教你:初识springboot

软帝学院教你:初识springbootSpring Boot简化了基于Spring的应用开发.你可以很容易地创建一个独立的,产品 级别的Spring应用. 我们为Spring平台及第三方库提供开箱即用的设置,这样你就 可以有条不紊地开始.多数Spring Boot应用只需要很少的Spring配置. 接下来我们开始第一个springboot应用,首先需要安装Java SDK 1.8 或更高版本 第一步通过maven创建应用SpringBoot-First,编辑pom文件,在文件中加入spring-

【软帝学院】Java反射机制!

Java反射 在 Java 中,并不是所有的类型信息都能在编译阶段明确,有一些类型信息需要在运行时才能确定,这种机制被称为 RTTI,即运行时类型识别,运行时类型识别主要由Class类实现. 1. Class类 在Java中,我们常用“class”(首字母为小写的c)关键字来定义一个类,说这个类是对某一类对象的抽象.你比如说王二是一个网络知名作者,我们可以这样简单地定义作者类: package com.cmower.java_demo.fifteen; class Author { privat

【软帝学院】一套好的java基础教学视频需要哪些有哪些内容

如今网上有很多java基础视频,这对于新人学java是很有帮助的,但是视频太多也对小白造成了困扰,不知道自己看的这套视频好吗,内容是否合格,适不适合新手看,我接下来便说一下一套合格的java基础视频应该有哪些内容. 一:Java编程基础 Java基础语法 职业导向训练概述.数据类型和运算符.时间管理.流程控制.数组 掌握Java语言的基础 Java面向对象 类和对象.封装.继承.多态.阶段练习-汽车租赁.抽象类和接口.阶段练习-图书销售管理.异常.职场写作力 掌握Java面向对象的思想及其特征

软帝学院:一万字的Java基础知识总结大全(实用)

Java基础总结大全(实用) 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库. JDK(Java Development Kit):java的开发工具,包括jre+开发工具 2.环境变量path和classpath的作用是什么? (1)p

软帝学院:一万字Java基础总结大全

Java基础总结大全(实用)想要更多面试题和学习资料的可以私聊联系我,大家一起交流学习! 一.基础知识:1.JVM.JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性.java语言是跨平台,jvm不是跨平台的.JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库.JDK(Java Development Kit):java的开发工具,包括jre+开发工具 2.环境变量p

软帝学院告诉你什么是java?学Java能做什么?Java有什么特性?

什么是java?学Java能做什么?Java有什么特性?Java 技术既是一种高级的面向对象的编程语言,也是一个平台.Java 技术基于 Java 虚拟机(Java virtual machine,JVM)的概念 -- 这是语言与底层软件和硬件之间的一种转换器.Java 语言的所有实现都必须实现 JVM,从而使 Java 程序可以在有 JVM 的任何系统上运行.Java 编程语言(Java programming language)与众不同之处在于:Java 程序既是编译型的(compiled)

【软帝学院】零基础学Java,必须搞懂的10个问题!

零基础学Java,必须搞懂的10个问题! Java是当前互联网行业内的热门语言,不仅可以应用于Android和网站开发而且也广泛应用于金融服务.高频金融空间等领域.也正是因为高居不下的热度,越来越多的人选择学习Java语言.那么零基础学习Java都需要搞懂那些问题呢? 1.Java语言的特点,Java与c++的区别 Java语言具有简单易学.安全性.可靠性.支持多线编程.编译和解释共存.与平台无关性等特点.Java与c++都是面向对象的语言.两者的区别是,C++的类支持多重继承,而Java的类是