异常机制总结

异常机制可分为 运行时异常和强制异常,在编写代码的过程中,我们最容易遇见的异常

有空指针异常、数组越界、类型转换异常。空指针异常在某个对象未被实例化,而又用

该对象名调用方法时发生。如:
public class Test extends JFrame{
private void testify(){
System.out.println("这是一个Test类");
}

/**
* @param args
*/
public static void main(String[] args) {
Test test=null;
test.testify();
}

}


以上代码中test并未创建,在执行时便会跑出异常:
Exception in thread "main" java.lang.NullPointerException
at example07.Test.main(Test.java:15)

当遇到这种异常时,较快的一种找到错误的方法是点击NullPointerException后的第一行

中的类与代码行Test.java:15,会直接链接到出现错误的那一行,然后在出错行用

System.out.println()方法输出可能是空的对象名,如:
System.out.println(test);
如果test为空,则会打印出 null,如果某一对象名涉及多层参数的传递,仍然可以用输

出的方法一层一层的检验,直到找到出错的位置。
数组越界异常的处理可以用与处理空指针异常时相同的方法找出出错行,数组越界极为

数组下表越界,如果数组下表为一个变量时,我们同样可以用输出的方法判断数组越界

的位置。
类型准换包括子类向父类的自动转型和父类向子类的强制转型,以下转换都是可行的:
public class Test extends JFrame{
private void testify(){
System.out.println("这是一个Test类");
Object obj =new Test();
JFrame frame=(JFrame)obj;
}
....
Object类是所有的类的父类,我们在编写某一个没有继承任何类的类时,这个类仍然继

承了Object类,以上代码中由于Object是JFrame的父类,而Test又是JFrame的子类,

故Object obj =new Test()是自动转型,而JFrame frame=(JFrame)obj是强制转型。
类型转换异常发生在没有继承关系的两个类强制转型时,如:
public class Test extends JFrame{
private void testify(){
System.out.println("这是一个Test类");
Object obj =new Test();
JPanel frame=(JPanel)obj;
}
.....
执行此段代码时系统会报错:
Exception in thread "main" java.lang.ClassCastException: example07.Test cannot be

cast to javax.swing.JPanel
at example07.Test.testify(Test.java:10)
at example07.Test.main(Test.java:19)
执行时异常RuntimeException是Exception(所有异常的父类)的子类,以上三个异常都是

RuntimeException的子类,在我们遇到其他的异常时可以首先 在API文档中找到这个异

常的解释,从而更快的找到错误。
强制异常发生在某个方法定义中抛出异常(thow new Exception())时,如:
private void testify() throws Exception{
System.out.println("这是一个Test类");
Object obj =new Test();
JPanel frame=(JPanel)obj;
throw new Exception();
}
在调用这个方法时必须用try...catch语句处理错误或继续向上抛出异常:
public static void main(String[] args) throws Exception {
Test test=new Test();
System.out.println(test);
test.testify();
...
以上代码中main方法也抛出异常,此时将异常抛给JVM处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值