java敏感异常是什么_java中的异常是什么?

Throwable(所有error和exception的父类:超类)

Java将错误变成对象交给异常处理机制

Error(仅靠程序本身无法恢复的严重错误)

一般是环境的问题,JVM的问题,并非程序的问题;最典型的就是虚拟机中运行的程序过多,造成的虚拟机内存溢出,虚拟机错误,还有系统崩溃之类的,应用程序是无法处理此类错误的。Error不在我们调试代码可以处理的范围中。

AWTError

ThreadDeath

...  ...

Exception(由java应用程序抛出和处理的非严重型错误)

Checked异常(检查时异常),程序必须处理的异常(代码调用,调用方声明有风险)

SQLException

ClassNotFoundException

......

例如文件调用:I/O 有可能找不到的风险

12cdb646e3790383c7a088df3de1813c.png

对于以上的文件读取可能发生的异常我们有两种处理方式:

1.    抛出,继续往上抛

2.    现场处理这个异常

运行时异常,不要求程序必须对它们做出处理(运行时才能抛出异常)

RuntimeException(运行时错误)

NullPointerException

对象没有被初始化生成的

3b3b2021fb29117db635519a881b8a4b.png

NumberFormatException

ArrayIndexOutOfBoundsException数组越界错误

52667037a48b3c408f9315462e63b3f9.png

......

ArithmeticExecption

数学异常(类似除零错误):

a58bfa3d2e3f66332e84f0351de4800b.png

Java中的异常处理是通过5个关键字来实现的:

捕获

try: 执行可能产生异常的代码

Catch:

异常捕获

Finally:

无论是否发生异常总能执行的代码

抛出

Throw:

手动抛出异常

Throws:

声明方法可能要抛出的各种异常

使用try、catch、finally的三种情况:

1.程序正常运行(不经过catch):

5f5ebd1f67795500ef267f24c2a22dbe.png

2.程序发生异常,经过catch且异常匹配:

329707d0fcb7247bb97aeed8332e9b93.png

3.程序发生异常,但是不能被catch和catch的不匹配:

fedc7c99f8bc0083393829f207d399d1.png

如果出现不能被catch那么程序就会报错,将异常往上抛,抛给JVM。

上面讲的是一段代码只有一种异常的最简单的情况;更多的时候一段代码不止一种异常:

d98d05338560171567e6f9ab240229f3.png

这里的try中有多行代码,可能出现的异常有多种:数学异常,String字符串的空指针异常,在try中如果出现了异常时,会在catch中寻找对应可以解决的catch块,但是如果将exception放在三个catch的最前面,就会报错,因为exception是所有异常的超类,出现异常必然会进入到exception中,后面的两个catch就会失效了

2ca2ed649644aa1cd9d6964e03af53c4.png

使用throw和throws:

在java本身的语法中就是对异常执行抛出的动作,java本身的语法 会把异常一层一层的往上抛,方法中出现了异常,则会把异常抛给调用它的主函数,主函数无法解决,就会把异常再次往上抛出,最后抛到JVM导致JVM死掉。

2630189d61440dde52841223d0207dc0.png

bf3a0a51e963483bbcb7b65f8dfa6a50.png

使用throws抛出的运行时异常相当于提示调用者,该方法有风险,至于是否处理该风险,由调用者决定;如果throws抛出的是检查时异常,那么调用者自己就必须在调用的时候进行处理(利用try ... catch),当然通过throws可以同时抛出多个异常.

ed982dc5c457d6015e817eecb04e0d50.png

------------------------------异常案例------------------------------------

packagejavaexception;

publicclassExceptionTest1{

publicstaticvoidmain(String[]args){

Workerworker=newWorker();

try{

worker.work(11);

}catch(Exceptione){

Doctordoctor=newDoctor();

try{

doctor.cure(worker);

System.out.println("治好了");

}catch(Exceptione1){

System.out.println("die");

}

}

}

}

classWorker{

privatebooleanalive=true;

publicbooleanisAlive(){

returnalive;

}

publicvoidsetAlive(booleanalive){

this.alive=alive;

}

//工作的方法

publicvoidwork(intcount)throwsException{

if(count>10){

thrownewException("生病");

}else{

System.out.println("正常工作");

}

}

}

classDoctor{

publicvoidcure(Workerworker)throwsException{

intt=(int)(Math.random()*10000);

if(t==4512){

worker.setAlive(false);

thrownewException("death");

}else{

worker.setAlive(true);

}

}

}

--------------------------------------------

运行时异常:

捕获:

7bc5f1b4e751bd5e6fd9d7759ff70bcd.png

特别提醒:在try... catch...  finally中 finally最好不省略,因为finally是保证程序是否发生异常,都必须执行的代码(即使我们在try块中强行return之后,finally中依然会执行),(例如我们在I/O流里面,必须做的关闭操作就应该放在finally中)||需要强调的是:唯一能终止finally执行的操作就是System.exit(0);及其它相关类似操作,这一类操作是直接终止程序的运行,关闭JVM。

如果在finally中发生异常的话,照样也会程序中断,因为没有人处理这个异常。

抛出:

Throw表示手动抛出一个异常,throws是声明该方法可能会抛出的异常(运行时异常调用者不用必须处理;只是知道这里会抛出这样一个异常)

38e8dd58f7f2c9174a5fb78d9b0c0712.png

检查时异常:

捕获:

printStackTrace是打印异常堆栈,但是一般我们不建议打印异常堆栈(IDE工具里JVM默认生成的),具体问题具体处理,一层一层的打印堆栈是比较耗性能的。

38d510da8be3ba45e7149f68abb594c3.png

抛出:

如果抛出的是检查时异常那么就必须被处理,要么在手动抛出的地方立马用try catch进行处理,要么继续往上抛,抛给调用这个方法的方法或者主函数,如下例:

a6a883788f64bb2177f4d76784fa6dde.png

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

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

相关文章

java为什么不推荐使用stack_栈和队列的面试题Java实现,Stack类继承于Vector这两个类都不推荐使用...

在 thinking in java中看到过说Stack类继承于Vector,而这两个类都不推荐使用了,但是在做一到OJ题时,我用LinkedList来模拟栈和直接用Stack,发现在进行入栈出栈操作时Stack的速度竟然还快一点然而需要多线程的时候有Collections.sy…

reducebykeyandwindow java_Spark Streaming笔记整理(三):DS的transformation与output操作

[TOC]DStream的各种transformationTransformation Meaningmap(func) 对DStream中的各个元素进行func函数操作,然后返回一个新的DStream.flatMap(func) 与map方法类似,只不过各个输入项可以被输出为零个或多个输出项filter(func) 过滤出所有函数func返回值…

php学好要多久,零基础php自学要多久

万事开头难,自学编程也是一样,只要能入门,在学起来就容易多了,那么零基础自学编程多久才可以入门呢,如何才能找到自学编程的门道呢? (推荐学习:PHP视频教程)零基础自学编程也可以,关…

php laravel 优点,Laravel 特点有哪些?

Laravel特点:1、“artisan”命令行工具,可以自动化完成手动的工作;2、“migration”管理数据库和版本控制;3、测试功能也很强大;4、适合应用各种开发模式TDD、DDD和BDD;5、支持Composer包管理工具。Laravel…

php+代码行数常量,php统计文件中的代码行数

函数介绍:file_get_contents()把整个文件读入一个字符串中。explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。count() 函数返回数组中元素的数目。在线视频教程分享:php视频教程示例如下:public functio…

PhP加载时显示动画,在ajax请求完之前的loading加载的动画效果实现

这篇文章给大家介绍的内容是关于在ajax请求完之前的loading加载的动画效果实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。很多时候我们需要引入框架来开发项目,这时我们可能会遇到页面还没加载完源码出来了的…

mybatis连接oracle12乱码,使用mybatis链接oracle数据库出现账号密码错误解决

使用mybatis链接oracle数据库步骤最近oracle老师布置下来了作业,要求使用传统的java代码链接oracle数据库做一个小程序,因为我已经很熟练的掌握了ssm框架的开发,以前用的是mysql,现在就尝试尝试oracle来练练手。问题一 oracle 的j…

linux关闭gvim命令,Linux 下 8 种退出 vim 编辑器的方法

Vim被称为一个非常强大的文本编辑器,但同样以其陡峭的学习曲线而闻名。 如果您经常使用命令行,那么至少应该学习一些基本功能。 如果你没有花时间去学习它,即使像退出Vim这样简单的事情也很困难。Vim是一套独立的软件,它有自己的一…

编译 linux 3,linux内核的编译(3)

linux内核的编译(3)2008-02-23 07:17:46来源:互联网 阅读 ()无论什麽档名),然後将你做的 zImage 拷贝进去,(例如,如果你用” /vmlinuz ″的话,就像这样″ cp zImage /vmlinuz ”)。接著重新执行 lilo — 在较新的系统上…

linux 端口限速技术,linux下如何实现对每个IP进行限制带宽??

linux下如何实现对每个IP进行限制带宽??(2011-09-01 01:03:54)标签:杂谈linux下如何实现对每个IP进行限制带宽??redhatlinux服务器,最近发现单位的网内BT下载、迅雷下载太多,严重影响正常上网&a…

Linux做施压机的最大线程数,关于性能测试的几个要点

几个定义性能测试(Performance Test)通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用。测试软件在系统中的运行性能,度量系统与预定义目标的差距。关注点:how much和how fast负载测试(Load Test)负载测试是一种性能测试&…

线性分组码c语言实验报告,C语言线性分组码(附注释).doc

C语言线性分组码(附注释).doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载内容预览)归上传者、原创作者&a…

杭电2005题c语言答案,杭电2005

题不难,但细节较多,所以。。。不但二月闰年有影响,七八月都是31天,这个也得专门分开讨论,还有就是七八月份开讨论后,加的基数是三到七月的,不能完全复制上面的代码,基数得改~做题还是…

android自定义dialog 全屏,自定义dialog全屏显示

默认的Dialog是不能全屏的。也就是怎么设置Dialog的Layout都没用的。下面给出实现Dialog实现全屏的两种方式:1、代码实现。这中方法相对比较简单首先继承Dialig,然后再构造函数中添加super(context, android.R.style.Theme);setOwnerActivity((Activity)…

全志android启动串口无打印,CSK.Blog-给MK802(USB大小的Android4.0小PC)引出串口信号,变成ARM开发版...

最近忙各类事情,blog写的不系统,见谅。这几天搞到了前不久被媒体宣传过的只有U盘大小的Android 4.0小PC。他的样子如下,使用HDMI接口连接显示器再外接一个usb键盘鼠标就能作为PC用了。托朋友买了台,试用了下果然还不错&#xff0c…

支付宝 android 2.3,app被拒记录-2.3-包含支付宝

2. 32020年8月21日 上午1:29发件人 Apple* 2. 3 Performance: Accurate Metadata### Guideline 2.3.1 - PerformanceWe discovered that your app contains hidden features. Attempting to hide features, functionality or content in your app is considered egregious beha…

html中图片动态效果代码,动态网页设计代码 网页制作动态图片效果源代码

动态网页设计需要用到什么工具?一般的用网页三剑客,dreamwear一般必用,比较好上手的,html是要懂的,cssdiv的标注设计也是要学习的。 如果是做前台页面设计会用到的工具:firework、flash、ps、 coreldraw 如…

html文件设置断点调试,断点调试

断点调试使用 ES2015 特性来开发 Node.js 项目可以带来巨大的便利,但同时由于有些特性现在还不支持,需要借助 Babel 编译,运行的代码实际上是编译后的代码,这样给调试带来很大的麻烦。ThinkJS 从 2.2.0 版本开始支持断点调试源代码…

html如何太假icon图标,CSS3 icon font完全指南(CSS3 font 会取代icon图标)

为什么要将icon做成字体?在很多网站项目中,我们常常会用到各种透明小图标,然后网站要兼容各个浏览器,也可能会有多个尺寸,甚至还要考虑换肤等需求。那么我们就要将这些小图标输出为多种尺寸、颜色和文件格式&#xff0…

html5 video 直播流无声音,【报Bug】html5plus 使用 VideoPlayer 播放部分rtmp没有声音

详细问题描述[内容]使用 html5plus 使用 VideoPlayer 播放流媒体,播放m3u8格式正常,但rtmp格式部分有问题。希望官方能确认是否是html5plus自身的缺陷呢,是否对某些编码类型的rtmp不支持?1、比如社区之前出现过的湖南卫视rtmp&…