ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVASE 学习笔记(面向对象------异常机制)

2021-11-06 13:34:39  阅读:125  来源: 互联网

标签:catch 处理 方法 try 面向对象 抛出 ------ JAVASE 异常


Error 和Exception的区别

ERROR:程序无法处理,出现时JVM会终止线程。

Exception:通常情况下是可以被程序所处理的,并且在程序中应该尽可能去处理这些异常。

异常指的是程序运行中出现的不期而至的各种状况如:

1.输入不符合要求

2.文件不存在或者格式不对

3.读取的数据库是空的

4.内部或者硬盘满了......等等

需要掌握的三种异常类型:

RuntimeException:编译通过,运行时才会被发现。

一般由程序员写代码时出现的逻辑错误引起的异常,在程序中可以选择捕获处理

 I/O Exception (非运行时异常)

 ERROR://错误不是异常(编译也能通过,不好预见)

ERROR通常由JAVA虚拟机生成并抛出

①Java虚拟机的堆溢出或者栈溢出时,将会出现OutOfMemoryError

②虚拟机执行应用时,类定义错误:NotClassDefFoundError、链接错误(LinkageError)

 

异常体系结构:

捕获异常和抛出异常:

五个关键词:try、catch、finally、throw、throws

try:

监控区域,里面放的是可能出错的(需要检查异常)的语句

catch:

①捕获异常,并在catch中写报错信息

 e.printStackTrace();语句可以打印出错误的栈信息 ,也可以自己手动用S.out写报错内容。

不过一般处理异常时不会简单的打印出异常,而是在catch中增加代码处理异常

②catch中可以用System.exit(1);语句直接来结束程序

③catch语句可以写多个来捕获多个异常,但从上到下只能执行一条,所以写的时候范围由小到大

从具体的Exception——>Exception——>Throwable(最大的范围,包含所以异常和错误)

写反了会报错

finally:

用于处理善后工作,例如在IO流中关闭资源。

其中try和catch是必须要有的,finally可以不写

PS:无论异常是否被捕获,finally都会被执行 

throw:(运行时异常)

主动的抛出异常,一般在方法中使用。

假设方法中处理不了这个异常。在方法中抛出异常,让调用该方法的对象来捕获异常。

程序本身就会报出异常的类型,用Throw可以选择 异常的类型。

抛出异常时程序就停止了,但是方法中的异常抛出可以在main函数中用try-catch函数接住,处理掉,这样就可以让程序不终止。

throws:

如果方法中的throw在方法中就被try-catch接收,则不需要用throws关键词

而在方法中的异常没有被try-catch接受,则需要在方法方法的声明处通过关键词    throws +要抛出的异常   来给到方法的调用者,然后在方法的调用者中被try-catch接收

用try-catch 捕获异常:

例①

除数为0时报出异常.ArithmeticException

 

 

快捷键:ctrl+alt+t

自定义异常:

 步骤:

1.自定义异常类

用toString方法来异常打印信息!!!

2.在方法中通过throw关键词抛出异常对象

3.如果在当前抛出异常的方法中处理异常,则使用try-catch语句捕获并处理

    否则在方法的声处通过throws关键词指明要抛出的异常给 方法调用者,继续进行下一步操作

此例中,用的是后者,即用了throws关键词,在方法的调用者中接收异常

 

4.在出现异常的方法调用者中捕获并处理异常:

 

a=11时的打印结果:

 异常总结:

1.处理Runtime Exception主要靠逻辑去合理规避,同时辅助try-catch处理

2.多重catch块后,可以加一个catch(Exception)来处理可能会被遗漏的异常

3.尽量添加finally语句块去释放占用的资源IO、Scanner

4.尽量去处理异常,而不是简单地调用printStackTrace()去打印输出

标签:catch,处理,方法,try,面向对象,抛出,------,JAVASE,异常
来源: https://blog.csdn.net/DeamonicHackers/article/details/119157500

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有