异常的学习笔记+打包+doc的包编译

jvm默认的异常处理机制就是调用printStackTrace方法

对于多异常的处理。应该是定义更具体的异常来捕捉捕捉问题

捕获异常代码块出现继承关系 应该把被继承的异常放在子类异常块的后面

throw 和 throws的区别

throw是是用在函数上,而throws是使用在函数内

throw后面跟的是异常对象,而throws跟的是异常类可以 多个

对异常的分类:

1.编译时被检测到的异常。

(值得去处理的异常,或者是希望得到调用者处理,并不影响运算意向)

2.编译时不被检测到的异常(运行时异常RuntimeException以及他的子类)

(不值得去处理的,交给jvm去处理,出现这种异常假如处理的会影藏异常影响了

运算意向,eg :角标越界、内存溢出、除0运算、空指针)

class Demo{

public void method(){

try{

throw new Exception();//此时的异常并没有处理,所以要进行抛出或catch否则编译出错

}finally{

//因为finally不是处理异常的而是不管异常怎么样都要执行的代码

}

}

}

1. 在继承时,子类不能抛出比父类中更多的异常(不包括父类异常和父类异常的子异常)

2. 如果父类方法抛出多个异常,那么子类只能抛出父类异常的子集。

3. 如果父类或接口的方法中没有异常,那么子类覆盖方法时,也不能抛只能自行处理。

class  Demo

{

public static void main(String[] args)

{

try{

Fu f = new Zi();

f.method1();

}catch(AException e){

/*

只能处理已知的异常,对于未知的异常不能处理,

因为在代码编写时,只会处理父类的异常

对于未知的子类中存在的异常在早先写好的异常处理的代码是不包括处理子类的异常。

*/

}

}

}

class Fu{

public void method1() throws AException{

throw new AException();

}

}

class Zi{

public void method1() throws CException,BException{

throw new BException();

}

}

Exception

AException

CException

BException


总结:

异常:

是什么?是对问题的描述,将问题进行对象的封装。

异常体系结构:

Throwable

|--Error

|--Exception

|--RuntimeException

异常体系的特点:异常体系中的所有类以及建立的对象都具有可抛性,

也就是说可以被throw 和 throws关键字所操作。只有异常体系具备这个特点。

throw 和 throws的区别:

throws是定义在函数上,用于抛出异常类,可一次性抛出多个异常。

throw是定义在函数内,用于抛出异常对象。

当函数内容有throw抛出异常对象,并未进行try处理。必须要在函数上声明,否则会编译失败

注意:RuntimeException除外,也就是说,函数内如果抛出了RuntimeEception异常,

可以不用声明。

如果函数声明了异常,调用者需要进行处理,处理方法:try 或者 throws

异常有两种:

编译时被检测的异常

该编译时,如果没有处理,编译会失败,该异常被标识,代表这可以被处理

运行时异常

编译时,不需要处理,编译不会进行检查

该异常的发生,建议不处理,让程序停止,对代码进行修正

注意:

finally中定义的关闭资源的代码,因为资源必须释放。

但是System.exit(0);finally中的代码不会被执行。

自定义异常:

定义继承exception或者runtimeexception

1.为了让该自定义类具备可抛性。

2.让该类具备操作异常的共性方法。

当要定义自定义异常的信息时,可以适应父类已经定义好的功能。

异常信息传递给父类的构造方法。

按照java的面向对象的思想,将程序中出现的特有问题进行封装 。

异常的好处:

1. 将问题进行了封装

2. 将正常流程代码和问题处理代码分离,方便阅读。

异常的处理原则:

1. 处理方式有两种: try 和 catch

2. 调用到排除异常的功能时,抛出多少个异常,就去处理几个

3. 多个catch,父类的catch被放到继承该异常的下面。

4. catch内,需要定义针对性的处理方式,不要简单的定义printStackTrace

5.当捕获的异常,本功能处理不了时,可以继续在catch中抛出。

6. 如果该异常处理不了,但并不属于该功能的相关异常。

可以将异常转化后,再抛出和该功能相关的异常。

7. 或者异常可以处理,当需要将异常产生的和本功能相关的问题提供出去。

当调用者知道,并处理。也可以将捕获的异常处理后,转换为新异常。抛出

eg: 汇款的例子    先处理,再告知调用者(通过异常传递信息)

异常的注意事项:

1.在子父类覆盖时:

1. 子类抛出的异常必须是父类异常的子类或者子集。

2. 如果父类或者接口没有异常抛出时,子类覆盖出现异常必须自行处理(try)


编译 javac -d 编译路径(后存放的位置) 文件.java

执行 java 包名.文件

jar.exe  打jar包

jar -cvfm classse.jar(归档文件名) 文件1 文件2 ..

异常的学习笔记+打包+doc的包编译,布布扣,bubuko.com

时间: 2024-10-12 16:34:19

异常的学习笔记+打包+doc的包编译的相关文章

Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)

触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的表进行的insert .update.delete操作或对视图进行类似的操作. 触发器是很多关系数据库系统都提供的一项技术.在Oracle系统里,触发器类似过程和函数,都有声明,运行和异常 处理过程的PL/SQL块. 触发器的组成: 触发事件:在何种情况下触发:比如:INSERT , UPDATE

MVC4 学习笔记 之 URL中存在编译的空格 20%20%

/Config/Edit/QQCC%20%20%20%20%20%20%20 原因是: 通过EF直接添加了空格? NO 是因为你的数据库字段设计问题,因为你当然设计如>:sID nchar(10) 那你一定想输入10个字符,但实际你只输入了必个,所以后面数据自动帮你补空了. 从EF数据库取出数据,在绑定的时候为安全,编码了,所以显示%20,代表一个空格. MVC4 学习笔记 之 URL中存在编译的空格 20%20%,布布扣,bubuko.com

Linux学习笔记:rpm程序包管理

以CentOS为例,rpm程序包管理器的相关内容如下: CentOS的程序包管理器:    程序包的命名规则:        源代码包:            software_name-VERSION.tar.gz            VERSION:major.minor.release                major:主版本号,通常代表重大功能改进的版本分支:                minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化:          

linux学习笔记——打包、压缩、远程文件传输

############打包.压缩########################## 1.打包 (打包表示把一堆文件变成一个)tar            ##打包工具        -f        ##指定生成包的名字        -c        ##创建包        -v        ##显示创建过程        -t        ##查看包中内容        -x        ##解包        -r        ##追加文件到包中        -C  

Scala2.11.7学习笔记(七)Scala包介绍

欢迎访问:鲁春利的工作笔记,学习是一种信仰,让时间考验坚持的力量. 本文出自 "鲁春利的工作笔记" 博客,请务必保留此出处http://luchunli.blog.51cto.com/2368057/1705420

Python学习笔记-打包发布Python模块或程序,安装包

Python模块.扩展和应用程序可以按以下几种形式进行打包和发布: python setup.py获取帮助的方式 python setup.py --help python setup.py --help-commands 所有可以使用的命令,如build,install python setup.py COMMAND --help 获取特定命令的帮助 python setup.py COMMAND --help-formats 获取特定命令支持使用的格式 打包 1.压缩文件(使用distuti

学习笔记之rpm程序包管理功能解析

Rpm包管理功能全解 软件包管理的功能:将编译好的程序的各组成文件打包成一个或几个程序包文件,为了方便的实现程序包的安装.升级.卸载.查询.校验.数据库维护. 下面我们来看看RPM包管理的解析 Rpm包在redhat和S.U.S.E中有很大的应用 我们接下来就以centos系统中rpm包的管理做一些详细的功能解析 使用yum(rhel系列)安装时可以自动解决依赖关系d rpm包命名格式: name-VERSION-release.arch.rpm VERSION:major.minor.rele

学习笔记之Linux程序包管理rpm、yum、编译

无论是Windows系统还是Linux系统,我们用户想要在操作系统上获得更多的乐趣还是更多的功能的话,就需要在一个干净的系统上安装各式各样的软件程序,Linux上的是ELF格式的,目前比较常见的程序包管理器如: Redhat软件包管理器---rpm Debian软件包管理器---dpkg 一.1.RPM 安装:rpm {-i|--install} [install-options] PACKAGE_FILE... -v: verbose,详细信息 -vv: 更详细的输出 -h: hashmark

网络学习笔记----01--pathping跟踪数据包路径

操作系统win7 Pathping主要用于提供有关在来源和目标之间的中间跃点处的网络滞后和网络丢失的信息. Pathping将多个回显请求消息发送到来源和目标之间的各个路由器一段时间,然后根据各个路由器返回的数据包大小计算其结果.因为pathping显示任何特定路由器或链接的数据包的丢失程度,所以用户可根据此确定引起网络问题的路由器或子网.Pathping通过识别路径上的路由器来执行tracert命令相同的功能.然后,该命令根据指定的时间间隔定期将ping发送到所有的路由器,并根据每个路由器的返