Java高级部分--异常重点总结

原创 2015年11月20日 20:42:57

2015年11月20日18:42:32

Java高级部分异常重点总结

作者:数据分析玩家生气生气

1.简述学习异常的必要性

1>在Java当中,大多数工具【类】里面的方法都会抛出一个异常,我们必须对这些异常进行捕获处理,否则编程的时候会出错

2>编程的时候有些问题必须用异常进行处理,if……else无法进行解决

2.简述对异常概念的理解

1>异常是程序运行过程中发生的事件,该事件可以中断程序指令的正常执行流程,使程序被强行终止

2>异常本质上就是一个类对象,由java虚拟机自动封装生成的一个类对象,因此它也是以类的方式生成的,如:

Exception e = new Exception(),该对象包含了很多信息,包括出错的信息

3>异常是一种处理机制,它提供了一种能够对错误处理的机制,异常不是编译时的错误,编译时的错误叫error,异常指的是运行时表现出来的一些错误

3.简述异常处理机制

在java当中,若一个程序在运行的时候出错,java虚拟机会自动的在出错的地方生成一个异常对象,而后java虚拟机会自动的在出错地方的附近寻找有没有对这个异常对象处理的代码,所谓异常处理代码就是try……catch语句和throws语句,如果没有,java虚拟机会自动的将这个异常对象抛给其调用函数,就这样层层抛出,如果在main当中也没有对这个异常对象处理的代码,java虚拟机最后会做一个简单粗暴的处理,将整个程序给终止掉,并将错误的信息在显示屏上输出

4.简述异常的分类

Error是编译时的错误,是程序员无法处理的异常

Exception是程序员可以捕获并处理的异常

所有异常的类都是Throwable的子类,普通类不能当做异常类,异常类必须要继承Throwable

异常分为2类:

1>凡是RuntimeException的子类异常,是程序员可以处理也可以不处理的异常

2>凡是Exception的子类异常但又不是RuntimeException的子类异常,是程序员必须进行捕获并处理的异常,否则编译时会出错

5.简述异常处理代码中try……catch的作用

1>try……catch语句本质上是对用户可能出现的错误进行的处理与提示,当用户出现了相应的错误之后,try……catch语句会将这个错误给捕获到,并进行相应的处理,以保证程序的流程不被打断,继续执行下去

2>只有try里面的代码出现了相应的错误,try……catch语句才会才会得到执行,否则try……catch语句将不会被执行

6.简述异常处理代码中try和catch关键字的具体含义

1>try即抛出的意思:java规定只有放在try里面的代码抛出的异常对象才有可能被捕获,即try里面存放的是可能抛出异常对象的代码,因此程序员必须自己判断哪些代码会出错,并将可能出错的代码放到try里面去;java编译器认为:一旦程序员将代码放到try里面去,意味着这些代码就会出错,就会抛出异常,因此如果代码不出错或不抛出异常的话就不要放到try里面去

2>catch即捕获的意思:catch当中的形式参数会自动的将异常对象给捕获到,并进行相应的处理;catch函数当中的printStack的作用是:输出错误的信息与错误的路径,便于程序的调试

7.简述异常处理代码块:

Try

{语句1;语句2;可能抛出异常的代码块…… }

Catch(Exception 1e){  }

Catch(Exception 2e){  }…………

Finall{ …………}的注意事项

1>如果语句1抛出了异常对象,语句2永远都得不到执行

2>所有的catch语句只能有一个被执行,并且有可能所有的catch语句都得不到执行

3>注意要先catch子类异常,在catch父类异常,如果先catch父类异常,在catch子类异常,则编译时会报错

4>注意子类重写方法抛出异常的范围不能大于父类被重写方法抛出异常的范围【为了保证多态的实现】【在线程当中经常用到这个知识】

5>无论try语句是否抛出异常,finally中的代码都会得到执行

8.简述异常处理代码块中finally的作用

1>finally语句为异常处理提供一个统一的出口,使得程序的控制流程在转到其它部分以前,能够对程序的状态做一个统一的管理

2>在finally语句中可以进行资源的清理工作,如关闭打开的文件,删除临时的文件等等

9.简述异常的两种处理方式

假设f方法抛出了A异常,则f方法有两种方式来处理A异常:

1>通过try……catch语句自己进行处理

2>自己不处理,通过throws A交给调用它的函数来进行处理

10.简述异常当中throw与throws两个关键字的用法

Throw

1>throw用来抛出异常对象:

格式为:throw new 异常名();

2>throw抛出的异常,必须是throwable的子类异常

Throws

1>throws只是一个声明,表示本函数不对抛出的异常A进行处理,交给调用它的函数来进行处理,最后交给jdk

格式为:void f() throws A

2>throws  A不表示调用f方法时,必须要对A异常进行捕获处理,可以根据异常的分类来进行处理

综上:

1>如果在一个方法内部已经对A异常通过try……catch语句进行捕获处理了,就不要在throws了

2>建议程序员对throws出的所有异常都进行捕获处理

11.简述异常的优缺点

优点:

1>增强了程序员对程序的可控性,保证了程序的流程顺利执行,不被打断

2>异常信息有利于代码的调试

3>强制程序员考虑程序的安全性与健壮性

缺点:

1>异常并不能够解决所有的问题

2>异常并不一定使程序的逻辑更加清晰,有的时候会导致程序的逻辑更加混乱


2015年11月20日20:41:32

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

深入理解java异常处理机制

1. 引子        try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中...
  • hguisu
  • hguisu
  • 2011-01-20 18:44
  • 264948

JAVA高级面试总结-JVM篇

Sun HotSpot VM,是JDK和Open JDK中自带的虚拟机,也是目前使用范围最广的Java虚拟机。 JVM内存分布 程序计数器:是一块较小的内存空间,可以看作是当前线程所执行的字节码的...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

成为java高级程序员需要掌握哪些

section 1 1.Core Java,就是Java基础、JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类...

Java高级特性之增强for循环(一)

前言 写道 for/in循环就是JDK5.0中所谓的增强For循环,它能对数组和集合进行遍历,使用它会使用你的代码短小而精炼的多。这里将介绍以下内容: 传统的for循环和增强for循环的比...

JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口

JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口 开始挑战一些难度了,线程和I/O方面的操作了,继续坚持 ...

JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想

JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组1.概念 数组就是同一种类型数据的集合,就是一个容器数组...

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客...

面试总结——Java高级工程师(三)

二、面试技巧 1、背熟你的简历 原因:面试的第一个问题,一般都是让你简单介绍下你自己,或者介绍一下你最近的项目,而一个面试者,如果连自己的简历都无法熟知,对里面提到的项目、技术都无法描述清楚的话,我...

JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

JAVA之旅(三十四)——最佳实战:浏览器 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接,可以看到什么样的效果 package com.lgl.socke...

JAVA之旅(十三)——线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this

JAVA之旅(十三)——线程的安全性, 我们继续上个篇幅接着讲线程的知识点 一.线程的安全性 当我们开启四个窗口(线程)把票陆陆续续的卖完了之后,我们要反思一下,这里面有没有安全隐患呢?在实际...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)