JVM 对Java异常的处理原理
最初我们用 Java 写 JSP 的时候,几乎可以不触及异常,因为 Servlet 容器会把 API 抛出的异常包装成
ServletException 丢给容器去处理。再后来应用分层,代码中要处理的异常便多了,一般会转换成自定义的业务异常类,用
try-catch-throw
customerException-finally。再到如今各种框架日臻成熟,代码中显式的异常处理又渐渐少了些,借助于 AOP
横行,异常对业务的影响描述被移入到了配置文件中了,例如,事物处理、权限的控制等。
这颇有些像手机的发展,当通信技术不甚发达的时候,手里抓的是砖头,信号是模拟的。后来慢慢瘦身成两三根手指大小,甚至是就一支笔似的,可如今信息量大了,屏幕要大,再配上 QWERT 键盘,机身自然就肥硕了。
当然与手机的个头变迁略有不同的是,任凭你怎么对待 Java 中异常,切入 AOP 也好,在 JVM 中处理异常的内在机制始终未变。
说到 Java 异常,无外乎就是 try、catch、finally、throw、throws 这么几个关键字,这些个的用法是没必要在这里讲了。我们这里主要关键一下 catch 和 finally 是如何在编译后的 class 字节码中的。
异常的抛出与捕获,Catch 子句的表现,来看看一段 Java 代码及生成的相应字节码指令。
package
com.unmi;
import
java.io.UnsupportedEncodingException;
public
class
AboutCatch {
public
static
void
main(String[] args){
try
{
transfer("JVM 对 Java 异常的处理"
,"gbk"
);
} catch
(Exception e) {
//e.printStackTrace();
}
}
//字符集转换的方法
&nb
相关文档:
最近学习java用到了JList,对于向JList中添加数据,困扰了好久,上网查给的答案都没个合适的,问了老师才弄明白些,总结如下:
1.使用Vector:首先把你的数据项都存放在Vector中,然后调用JList的setListData()方法,将Vector添加到JList中
Vector vt=new Vector();
JList list=new JLis ......
public class TreeNodes{
IList<BranchInfo> branchs = BranchInfoManager.getAllBranchInfos();
foreach(BranchInfo branch in branchs){
TreeNode branchNode = new TreeNodeCreate(branch.BranchName,branch.BranchId.toString(),"","~/Images/menuclose.gif");
  ......
A.使用关键字this的准则:
1.在构造器中,如果要使用关键字this,那么,必须放在第一行,否则将导致一个编译错误。
2.构造方法引用this指向正在执行方法的类的实例。静态方法不能使用this关键字,因为静态方法不属于类的实例,所以this也就没有什么东西去指向。构造器的this指向同一个类中,不同参数列表的另外一 ......
在Java中,使用new关键字和Class.forName("a.class.Name").newInstance都可以创建对象,它们又有什么区别呢?
1、类的加载方式不同。
在执行Class.forName("a.class.Name")时,JVM会在classapth中去找对应的类并加载,这时JVM会执行该类的静态代码段。在使用 ......
Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家做一个简要的介绍。
......