9、java中的异常处理机制

      Java中的异常(Throwable)分为两类:异常Execption和错误Error。

      Error,也就是错误,这个是不可避免的,出现的问题使得应用停止,例如:服务器损坏、内存溢出等。在java中所有的错误都继承自Error类,这个是不可控的。

      Exection,也就是异常,是可控的,异常又分为编译时异常和运行时异常,编译时异常是由编码语法错误导致的,在编译时期就可以看出来,即使进行修改。代码如下:

public class ErrorTest {public static void main(String[] args) {String s = 5;//这样就会直接报错,开发者可以直接看到}
}

运行时异常是由业务逻辑导致的,只有到了运行时才可以看出来。代码如下:

public class ErrorTest {public static void main(String[] args) {int i = 5;int j = 4;add(i, j);//5+4=1System.out.println(i / 0);//这里违反了除法的基本逻辑,运行时也会报错}public static void add(int i , int j) {//这里就是编译时异常,有逻辑不清造成System.out.println("i+j="+(i - j));}
}

       因为当程序出现异常时便不再继续往下执行代码,所以异常需要处理,这里的异常值得是Exection,如果程序发生Error,应用会直接停止,而不是不继续往下执行代码,错误是控制不了的,只能重启应用,所以错误一定要避免。Java中解决异常的方式有抛出异常和捕获处理异常。所谓抛出异常就是指当程序遇到异常时,不去处理异常,而是将异常抛出去,保证程序能继续往下执行,捕获异常则是指程序遇到异常时,将异常的错误信息进行处理,保证程序继续执行,代码如下:


/*** 异常的处理方式有两种:* 一是使用throws或者throw:只是将错误抛出,不做任何处理* 						可以在代码中主动抛出错误,使用thorw关键字,格式为throw new Exception();* 						可以在方法上、类上抛出错误,使用thorws关键字,格式throws Exception* 而是使用try..catch..finally:捕获错误,处理错误* 						格式如下:* 								try{* 									可能发生错误的代码;* 								}catch(异常类){* 									抛出异常信息;//可以有多个catch块* 								}finally{* 									finally中的代码不管怎么样都会执行;* 								}* @author chaizepeng**/
public class ErrorTest {public static void main(String[] args) {int i = 5;int j = 0;//add方法抛出了异常,在这里捕获异常并作处理try {add(i,j);} catch (ArithmeticException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}finally {System.out.println("做一下容灾处理。。。");}}//在这里不处理错误,将错误抛出,谁调用这个方法,出错的时候再做处理public static void add(int i , int j) throws Exception{System.out.println(i/j);throw new Exception();}
}

      开发者可以自定义异常,就是继承自Execption类,然后自定义异常即可,代码如下:

public class NoZeroExection extends Exception{//继承自Exception类public NoZeroExection() {//用构造方法来描述错误信息System.out.println("不可出现数字0");}}class Test{public static void main(String[] args) {int flag = 0;try {//捕获异常myExcetion(flag);} catch (NoZeroExection e) {System.out.println("出现错误:");e.printStackTrace();}}public static void myExcetion(int flag) throws NoZeroExection{//抛出异常if (flag == 0) {throw new NoZeroExection();}System.out.println("正常执行。。。");}
}

常见的异常

空指针异常NullpoiontException
数组下标越界ArrayIndexOutOfBoundsException
参数错误ArithmeticException
IO异常IOException
类不存在异常ClassNotFoundException
方法不存在异常NoSuchMethodException
sql异常SQLException
。。。。 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ教程C#版 - 工作队列

先决条件本教程假定RabbitMQ已经安装,并运行在localhost标准端口(5672)。如果你使用不同的主机、端口或证书,则需要调整连接设置。从哪里获得帮助如果您在阅读本教程时遇到困难,可以通过邮件列表联系我们。1.工作队列&…

动态规划训练23 [Making the Grade POJ - 3666 ]

Making the Grade POJ - 3666 这道题目有点意思。 我们定义dp[i][j]表示的含义是把包含前i个元素的子序列变成非递减的子序列,并且最后一个元素变成j所需要耗费的最小代价 那么状态转移方程可以写出来就是: dp[i][j] min(dp[i-1][k] abs(num[i] - j…

jzoj3889-序列问题【dp,高精度】

正题 题目链接:https://jzoj.net/senior/#main/show/3889 题目大意 一个序列nnn&#xff0c;求两个集合S,T∈[1..n]S,T\in[1..n]S,T∈[1..n]使得ax(x∈S)a_x(x\in S)ax​(x∈S)的xorxorxor和就是ay(y∈T)a_y(y\in T)ay​(y∈T)的andandand和&#xff0c;且x<y(x∈S,y∈T)x…

10、java中文件的抽象表示

java中使用File类来作为文件和目录路径名的抽象表示&#xff0c;是对于文件或者目录本身的属性来说的&#xff0c;而不是针对于文件的内容。 一些关于File类基本操作的代码如下&#xff1a; public class FileTest {/*** 可用于操作文件或者目录* author chaizepeng** param a…

IdentityServer4实战 - 基于角色的权限控制及Claim详解

一.前言大家好&#xff0c;许久没有更新博客了&#xff0c;最近从重庆来到了成都&#xff0c;换了个工作环境&#xff0c;前面都比较忙没有什么时间&#xff0c;这次趁着清明假期有时间&#xff0c;又可以分享一些知识给大家。在QQ群里有许多人都问过IdentityServer4怎么用Role…

动态规划训练24 [Phalanx HDU - 2859 ]

Phalanx HDU - 2859 这是一道非常好的题目&#xff0c;我实在是没想到该怎么做&#xff0c;看了一下大神的题解才恍然大悟&#xff08;还有这种操作&#xff1f;&#xff09; 由于对称矩阵是以对称轴进行对称的&#xff08;废话&#xff09;&#xff0c;所以我们可以用dp[i][j…

jzoj3890-长途旅行【同余最短路】

正题 题目链接:https://jzoj.net/senior/#main/show/3890 题目大意 nnn个点mmm条边的图&#xff0c;询问是否有111到nnn长度为TTT的路径。 解题思路 让WWW等于连接111的最小权值的两倍&#xff0c;然后用fi,jf_{i,j}fi,j​表示到第iii个点是否有权值%Wj\%Wj%Wj。然后用fi,T%W…

11、java中的I/O流(1)

我对于流的理解是这样的&#xff0c;计算机的本质本来就是对输入的数据进行操作&#xff0c;然后将结果输出的一种工具&#xff0c;数据在各个数据源节点之间进行流动&#xff0c;感觉流就是对这种状态的一种抽象&#xff0c;一个数据流表示的就是一系列数据序列&#xff0c;ja…

nssl1436-赛艇表演【最短路】

正题 题目大意 nnn个点mmm条边的无向图&#xff0c;每个点有门票费&#xff0c;对于每个点求一个点使得去那里看完赛艇并回来消耗的时间最小。 解题思路 因为是无向图&#xff0c;所以去和回是同一条路&#xff0c;把每个点作为起点将门票费压入然后跑最短路。 codecodecode …

ASP.NET Core 集成测试

集成测试集成测试&#xff0c;也叫组装测试或联合测试。在单元测试的基础上&#xff0c;将所有模块按照设计要求&#xff08;如根据结构图&#xff09;组装成为子系统或系统&#xff0c;进行集成测试。实践表明&#xff0c;一些模块虽然能够单独地工作&#xff0c;但并不能保证…

12、java中的I/O流(2)

再介绍一下其他一些流的使用 数据操作流&#xff0c;数据输入流允许应用程序以独立于机器的方式从底层输入流读取原始Java数据类型&#xff0c;意思就是平台无关&#xff0c;相关的两个类DataInputStream、DataOutputStream&#xff0c;使用如下&#xff1a; public class Da…

nssl1437-逮虾户【二分答案】

正题 题目大意 nnn段路&#xff0c;每一段路速度是vidv_idvi​d&#xff0c;长度是sis_isi​&#xff0c;在ttt秒跑完了&#xff0c;求ddd的值。 解题思路 指数域二分&#xff0c;然后判断是否跑完即可。 codecodecode #include<cstdio> #include<cstring> #incl…

动态规划训练25 [Food Delivery ZOJ - 3469 ]好题

Food Delivery ZOJ - 3469 区间DP的一道好题。 在这道题里&#xff0c;无非就是从出发点向左走到x1再向右走到有y1&#xff0c;再向左走到x2&#xff0c;再向右走到y2.。。。这样&#xff0c;一直将所有的顾客遍历完。 显然&#xff0c;起点这个点是非常特殊的一个点&#xf…

使用C#开发Android应用之WebApp

近段时间了解了一下VS2017开发安卓应用的一些技术&#xff0c;特地把C#开发WebApp的一些过程记录下来&#xff0c;欢迎大家一起指教、讨论&#xff0c;废话少说&#xff0c;是时候开始表演真正的技术了。。1、新建空白Android应用2、拖一个WebView控件进来3、打开模拟器Genymot…

13、字符集和字符编码

字符集&#xff1a;字符集是多个字符的集合&#xff0c;常见字符集有&#xff1a;ASCII字符集、GB2312字符集、GB18030字符集、Unicode字符集等。 ASCII字符集&#xff1a;是英文大小写字符、阿拉伯数字和西文符号的一个集合。&#xff08;可以看一下电脑键盘上的键&#xff0c…

nssl1438-战略威慑【枚举,树的直径】

正题 题目大意 nnn个点的无根树&#xff0c;求两条不相交的路径使它们长度之积最大。 解题思路 我们暴力枚举第一条&#xff0c;然后求树的直径即可。 codecodecode #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const i…

ASP.NET Core依赖注入深入讨论

这篇文章我们来深入探讨ASP.NET Core、MVC Core中的依赖注入&#xff0c;我们将示范几乎所有可能的操作把依赖项注入到组件中。依赖注入是ASP.NET Core的核心&#xff0c;它能让您应用程序中的组件增强可测试性&#xff0c;还使您的组件只依赖于能够提供所需服务的某些组件。举…

15、java中的集合(2)

说一下单列集合&#xff0c;java中的单列集合的顶级接口是Collection&#xff0c;它有两个子接口&#xff1a;List、Set&#xff0c;本篇介绍一下List接口及其实现类的功能方法和基本实现原理。 List集合是有序集合&#xff0c;这里的有序并不是指存入List集合的元素会被自动排…

P2467-[SDOI2010]地精部落【dp】

正题 题目链接:https://www.luogu.org/problem/P2467 题目大意 求长度为nnn的波动序列的个数。 解题思路 我们先考虑第一个是上升的&#xff0c;然后乘2即可。 设fi,jf_{i,j}fi,j​表示填1∼i1\sim i1∼i个&#xff0c;最前面的是jjj的个数。然后我们只要是1∼i−j11\sim i…

双向广搜 8数码问题

转载自&#xff1a;http://blog.sina.com.cn/s/blog_8627bf080100ticx.html Eight 题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1043讲到双向广搜&#xff0c;那就不能不讲经典的八数码问题&#xff0c;有人说不做此题人生不完整 。所谓双向广搜&am…