Java基础笔记 – Java中的Exception异常 自定义异常
本文由发表于6年前 | Java基础 | 评论数 2 |  被围观 39,834 views+
1、异常的分类:① 非运行时异常(Checked Exception)② 运行时异常(Runtime Exception/Unchecked Exception)2、异常的处理:3、捕获异常:4、抛出和捕获异常:4.1、把异常交给JVM处理:4.2、或者使用try catch语句块捕获异常:5、自定义异常:5.1、创建自定义异常:5.2、在类中使用异常:5.3、捕获自定义异常:6、异常使用注意事项:
public class Exception
    extends Throwable
Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
public class RuntimeException
    extends Exception
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。
1、异常的分类:
① 非运行时异常(Checked Exception)

Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常

② 运行时异常(Runtime Exception/Unchecked Exception)

a) RuntimeException类直接继承自Exception类,称为运行时异常。Java中所有的运行时异常都直接或间接的继承自RuntimeException.

Java中所有的异常类都直接或间接的继承自Exception。

2、异常的处理:

对应非运行时异常,必须对其进行处理。处理方式有两种:

使用try…catch…finally语句块进行捕获
在产生异常的方法所在的方法声明throws Exception

对于运行时异常,可以不对其进行处理,也可以对其进行处理。一般情况下都不对其进行处理。

3、捕获异常:
try {
    FileInputStream fs = new FileInputStream("D:/temp/a.txt");
} catch (FileNotFoundException e) {
    System.out.println("catch...");
    e.printStackTrace();
} finally{
    System.out.println("finally...");
}
4、抛出和捕获异常:
4.1、把异常交给JVM处理:
public class ExceptionTest {

    public static void execute() throws Exception {
        System.out.println("execute...");
        throw new Exception();
    }

    public static void main(String[] args) throws Exception {
        execute();
    }
}
4.2、或者使用try catch语句块捕获异常:
public class ExceptionTest {

    public static void execute() throws Exception {
        System.out.println("execute...");
        throw new Exception();
    }

    public static void main(String[] args) {
        try {
            execute();
        } catch (Exception e1) {
            e1.printStackTrace();
        }
    }
}
5、自定义异常:

自定义异常通常是定义一个继承自Exception类的子类。一般情况下我们都会直接继承自Exception类,而不会继承某个运行时的异常类。

5.1、创建自定义异常:
public class MyException extends Exception{
    public MyException(){
        super();
    }
    public MyException(String msg){
        super(msg);
    }
}
5.2、在类中使用异常:
public class ExceptionTest {

    public static void execute(String a) throws MyException {
        System.out.println("execute...");
        if("true".equals(a)){
            throw new MyException("参数不能为 true");
        }
    }
}
5.3、捕获自定义异常:
public static void main(String[] args) throws MyException {

    execute("true");
}
6、异常使用注意事项:

当使用多个catch语句块来捕获异常时,需要将父类的catch语句块放到子类型的catch块之后,这样才能保证后续的catch可能被执行,否则子类型的catch将永远无法到达,Java编译器会报编译错误。

如果try语句块中存在return语句,那么首先会执行finally语句块中的代码,然后才返回。

如果try语句块中存在System.exit(0)语句,那么久不会执行finally语句块的代码了,因为System.exit(0)会终止当前运行的JVM。程序在JVM终止前结束执行。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/java-based-notebook-java-exceptions-in-the-exception-custom-exception.html
关键字: , ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 11/2
文章评论
    2条评论
  1. 钟汉良论坛(BBS) 2013年07月06日16:40:50  #-49楼 回复 回复

    好东西,自定义异常,更好的给用户提示

给我留言

有人回复时邮件通知我
Java基础的相关文章
随机文章 本月热门 热评
1 设备管理及其相关技术-磁盘调度SPOOLing技术 2011/6/30
2 Java笔记 – 数组 一维数组 多维数组 数组与泛型 数组实用功能 2014/3/14
3 Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用 2011/7/14
4 Java基础笔记 – 内部类 静态内部类 成员内部类 局部内部类 匿名内部类 2011/11/3
5 Java基础笔记 – 面向对象三个特征 继承、封装、多态及编程细节提示 2011/10/25
6 AtomicInteger的介绍和使用 2012/7/30
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.