MyException - 我的异常网
当前位置:我的异常网» 综合 » Thinking in java (九)

Thinking in java (九)

www.MyException.Cn  网友分享于:2013-02-03  浏览:0次
Thinking in java (9)

 

  12异常

 

发现错误的理想时间在编译阶段;

 

java异常处理 --- C++  ----Ada

 

使用异常,降低错误代码复杂度

 

如果不使用异常,必须检查指定错误

 

如果使用异常,不必在方法调用处检查异常

 

 

 

Throwable 异常类型的根

 

java.util.logging

 

编译时被强制检查的异常,称为检查的异常

 

 

 

Error

 

Exception  可抛出来的基本类型

 

 

 

不受检查异常 RuntimeException  不用捕获

 

  *
12 通过异常处理错误
发现错误的理想时间是在编译阶段。
:没有未处理的异常
1.
JAVA异常处理机制>C++>Ada
使用异常,降低错误代码处理的复杂度

如果不使用异常, 就必须检查特定的错误.
如果使用了异常,就不必在方法调用处理检查.因为异常将保证捕捉这个错误->异常处理程序中.
把"正常程序中做什么事"和"出了问题怎么办"分离开来

2.基本异常
异常发生了后,他不允许沿着正常的路径走下去.
(1)异常类有2个构造函数:一个默认构造和一个接受字符串参数(这个字符串提取出来有多种方法)
跨越方法调用栈层次
Throwable对象, 异常类型的根类
异常对象中的信息仅有异常类型,

3.捕获异常
try{
}catch(Exception e){
}

终止模型 和恢复模型(耦合大,不适用)

4.创建自定义异常
(1)异常与记录日志
java.util.logging

5.异常说明
throws 潜在异常类型列表

编译时,被强制检查的异常 称为被检查的异常.

6.捕获所有异常
(1)栈轨迹
(2)重新抛出异常
(3)异常链

7.JAVA标准异常
Throwable 类   (1)Error 编译时和系统错误 (2) Exception 可抛出的基本类型
对异常来说,关键是理解概念以及如何使用
不受检查异常 RuntimeException 这类属于错误,不用捕获 

8.使用finally清理
(1)finally作什么 : 除内存之外的资源恢复到初始态,需要清理的资源
(2)异常丢失

9.异常限制
派生类不能捕获基类异常
在继承和覆盖过程中,异常说明的接口不是变大,而是变小了

10.构造器
对于构造器可能异常,最好使用try catch

11.异常匹配

12.
在恰当的级别处理问题
解决问题并重新调用产生异常的方法(向外传递)
少许修补后绕过异常继续执行
农业替代方法预计会返回的值
当前环境下整改尽量做完,把相同异常抛到更高层
把不同异常抛到更高层
终止程序
进行简化 
让类库更安全

 

13章字符串

 

String 对象是不可变的

 

每一个看起来会修改String值的方法,都创建了一个全新的String 传递引用拷贝

 

参数是传递信息的,而不是想让方法改变自己的

 

 

 

java不允许操作员重载操作符

 

 

 

通过反编译比较String效率

 

如果要构造循环,请使用StringBuild 不仅编译的程序更短,且只new一个对象

 

insert  replace substring reverse append toString

 

无意识的递归

 

Super.toString

 

String StringBuild StringBuffer

 

格式化

 

System.out.format    printf     println

 

Java.util.Formatter

 

 

 

格式b 转换:只要参数不是null 结果总是True

 

String.format

 

正则:强大而灵活的文本处理工具

 

简洁  动态  匹配选择  编辑验证

 

 

 

Java.util.regex.Pattern 你应该将这一页加收书签中

 

Java.util.regex.Matter

 

 

 

第十四章 RTTI和反射

 

面向对象编程的基本目的是让代码只操作对基类引用

 

多态是面向对象编程基本目标

 

 

 

动态绑定;泛化;多态;

 

 

 

RTTI 在运行时识别一个对象的类型

 

Class 对象是用来创建类的所有常规对象java使用class 对象来执行RTTI

 

每个类都有一个class 对象,为了生成这个对象, JVM运行使用类加载器子系统

 

只有一个原生类加载器,它是JVM实现的一部分

 

 

 

所有类第一次使用,动态加载JVM

 

对类的静态成员引用,证明构造器

 

JAVA开始运行前,并非完全加载必须加载时才加载这是C++静态加载语言跪舔的技能。

 

 

 

类加载器首先检查这个类的class 对象加载

 

如果未加载默认的类加载器根据类名检查 class 这个类的字节码加载时,它们接受验证,不包含不安全代码。

 

 

 

Class.forName 如果类还没有被加载就加载它

 

 

 

加载查找字节码,创建一个class对象

 

链接验证,静态域分配存储空间

 

初始化如果有超类初始化,静态初始化器,

 

初始化被延迟到了对静态方法(构造器)非常数静态域首次引用才执行。

 

 

 

泛化的class引用

 

Class引用总是指向某个Class对象它可以创建类的实例,表示它所指向的对象确切类型

 

Class添加泛型语法的原因:编译期类型检查

 

 

 

新的转型语法

 

类型转换前先做检查

 

RTTI

 

传统类型转换  经典转换安全向下

 

代表对象的类型的 class对象可获取运行时的信息

 

 

 

使用字面常量

 

instanceOf 动态

 

 

 

递归计数

 

与预加载映射表不同

 

 

 

注册工厂:将对象的创建工作交给类自己去完成;工厂方法可以被多态调用,从而创建恰当类型的对象

 

 

 

协变返回类型

 

 

 

反射:运行时的类信息

 

基于构件的编程架构

 

远程平台上创建和运行对象RMI

 

Class java.lang.reflect

 

Field      get/set 

 

 

 

Method   invoke

 

Constructor  

 

 

 

RTTI vs reflect

 

1.      Rtti 来说,编译器在编译时打开和检查 class

 

2.      Reflect 运行时才打开和检查 class

 

 

 

反射:序列化和javaBean

 

类方法提取器

 

 

 

=========================

 

P8动态代理

 

为了提供额外的或不同的操作,而插入的用来代替实际对象的对象,这些操作通常涉及与实际对象通信,因此,代理充当中间人。

 

 

 

在任何时刻,只要你想将额外的操作从实际对象中分享到不同的地方,特别当你能够很容易作出修改,从没有使用额外操作转为使用这些操作,或反之代理

 

 

 

Java动态代理上所做的让你的要么团都会重定向到单一的调用处理器上

 

 

 

 

 

通过静态方法Proxy.new ProxyInstance 可以创建动态代理;这个方法需要

 

1.      一个类加载器(可以从已被加载的对象中获取然后传递给它)

 

2.      一个希望线程实现的接口列表(不是类,抽象类)

 

3.      invocationHandler接口的一个实现

 

 

 

空对象

 

 

 

接口与类型信息

 

Interface 并没有提供保护

 

对实现使用它包访问权限

 

反编译-反射 

 

Javap –private C

 

 

 

内部类  匿名类

 

没有任何方式可以阻止反射到达并调用那些非公共访问权限的方法

 

 

 

RTTI允许通过匿名基类引用来发现类型信息,但这样在代码开发和维护中损失了多态。

 

OOB的基本目的是凡是可以使用的地方都多态,只要必要使用RTTI

 

不要太早关注效率,要让程序快快运行起来;

 

动态代码是JAVAC++区别之一

 

文章评论

中美印日四国程序员比较
中美印日四国程序员比较
总结2014中国互联网十大段子
总结2014中国互联网十大段子
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
每天工作4小时的程序员
每天工作4小时的程序员
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员应该关注的一些事儿
程序员应该关注的一些事儿
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
为什么程序员都是夜猫子
为什么程序员都是夜猫子
10个调试和排错的小建议
10个调试和排错的小建议
Java程序员必看电影
Java程序员必看电影
鲜为人知的编程真相
鲜为人知的编程真相
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
我是如何打败拖延症的
我是如何打败拖延症的
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
旅行,写作,编程
旅行,写作,编程
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的鄙视链
程序员的鄙视链
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员必看的十大电影
程序员必看的十大电影
那些争议最大的编程观点
那些争议最大的编程观点
编程语言是女人
编程语言是女人
程序员和编码员之间的区别
程序员和编码员之间的区别
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
 程序员的样子
程序员的样子
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
如何成为一名黑客
如何成为一名黑客
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
代码女神横空出世
代码女神横空出世
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有