Java异常处理

Vincent · 发布于 2016-07-06 · 字数2964 · 浏览 1205 · 评论 0

异常类

Throwable类是 Java 语言中所有错误(Error)或异常(Exception)的超类

异常处理

异常声明(消极)

异常声明使用关键字throws,例如:

public static void main(String[] args) throws Exception {
        
}

异常抛出(消极)

异常抛出使用throw关键字,例如:

if (1 < 0) {
    throw new Exception("错误");
}

异常捕获(积极)

异常捕获使用try-catch块,例如:

try {
    System.out.println(1/0);
} catch (Exception e) {
    e.printStackTrace();
}

 

自定义异常

继承java.lang.Exception类,重写该类的构造方法,并在构造方法中使用super关键字调用父类的构造方法,例如:

class SecurityException extends Exception {
    public SecurityException() {
        super();
    }

    public SecurityException(String message) {
        super(message);
    }

    public SecurityException(String message, Throwable cause) {
        super(message, cause);
    }
    
    public SecurityException(Throwable cause) {
        super(cause);
    }
}

 

try-catch-finally

try {
    //可能发生异常的代码    
} catch (Exception_1 3) {
    //异常1处理代码
} catch (Exception_2 2) {
    //异常2处理代码
} catch (Exception_.. ..) {
    //异常..处理代码
} catch (Exception_n n) {
    //异常n处理代码
} finally {
    //无论是否有异常发生,此处代码都会执行,除非调用了System.exit(0)退出java虚拟机
}

注意:

1. 如果try块中有多个异常,则可以写一个catch使用java.lang.Exception一次捕获所有异常,也可以用多个catch分别捕获每类异常,

2. 如果使用多个catch,需要注意子级异常要写在父级异常之前(如果存在异常包含),因为catch的匹配顺序是由前至后按顺序进行的

3. 如果有多个catch, 并且有异常发生,则最多只有一个catch块被匹配到,即使存在异常包含

4. catch和finally不是必须出现,可以只有try-catch, 也可以只有try-finally

5. 如果try块中有多个异常,一旦发生异常,发生异常位置之后的代码(try块中)不再执行

6. 如果try块中使用了return,则执行顺序为:try块中return之前代码 -> finally块 -> return值

7. 如果try块中使用了System.exit(0),则表示退出java虚拟机,该行代码之后所有代码不再执行(包括finally块)

 

继承和接口实现中的异常处理

继承中的异常处理

1. 父类方法没有声明异常,子类在重写该方法时也不能声明异常

2. 父类方法声明了异常,子类在重写该方法时声明的异常必须和父类方法声明的异常相同或者为父类方法声明的异常的子类

3. 如果父类的方法声明的异常类型只有非运行时异常(运行时异常),则子类在重写该方法的时候声明的异常也只能有非运行时异常(运行时异常),不能含有运行时异常(非运行时异常)

有关运行时异常和非运行时异常,请参考:http://www.tuicool.com/articles/YVZBNfN

接口实现中的异常处理

接口中定义的方法声明了异常,实现该接口的方法可以不抛出任何异常,也可以抛出相同异常,也可以抛出子级异常

 

本文系作者 Vincent 授权问说网发表,并经问说网编辑,转载请注明出处和 本文链接

相关文章

  • 2016-03-01Tinymce开始使用入门教程
  • 2016-03-23多平台适配的代码设计
  • 2016-03-15Node-http-proxy全功能的Node.js Http代理
  • 2016-05-16有帮助!值得一看!网页设计中的“点、线、面”
  • 2016-05-17哑铃的图标制作教程
  • 2016-06-24配置和查看Apache运行性能监控状态
  • 2016-07-12phpStudy让天下没有难配的PHP环境
  • 2016-07-12分享10个在使用Photoshop过程中的小技巧
  • 发布评论

    为您推荐

    问说网 · 发布于 2014-09-22

    跨浏览器的半透明背景

    这是一个简单的教程来,主要是说明在所有的浏览器中,如何让你的HTML元素实现半透明背景,现在大多数网页开发人员都知道,可以使用24位的PNG图像的在新的浏览器实…

    问说网 · 发布于 2015-09-03

    使用Blast.js制作网站文字动画效果

    由于文本动画很少采用的网页,使用一个简单的方法是给用户留下深刻的印象。这就是为什么这个话题很有趣的学习:底层技术是简单的程序,但结果感到极其丰富和复杂的用户。

    SVN
    Vincent · 发布于 2016-07-06

    SVN

    下载 Subversion(SVN服务端): 下载地址1 下载地址2 TortoiseSVN(SVN客户端): 下载地址1 下载地址2   安装 SV…

    Vincent · 发布于 2016-07-06

    Java中面向对象的封装和继承以及多态

    封装 封装是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法,封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问 java的…

    Vincent · 发布于 2016-07-06

    Oracle(ALL | DBA | USER)

    查看用户 查看所有的用户 select * from all_users; 查看dba的用户 select * from dba_users; 注:由于dba拥…

    Vincent · 发布于 2016-07-06

    SSH环境搭建

    Struts部分 web.xml中配置: <filter>     <filter-name>struts2</filter-na…

    分享几款唯美的中文字体

    不可否认,中文的文字排版始终没有英文那么好看,但是不知道你有没有想过,是不是我们使用的字体的问题,没有选择合适的字体,这篇文章将为您分享几款唯美的中文字体。

    • 分享几款唯美的中文字体
    • 分享几款唯美的中文字体
    • 分享几款唯美的中文字体
    • 分享几款唯美的中文字体
    问说网 · 发布于 2016-07-12 · 浏览 1498 · 评论 0

    十款Chrome扩展帮助前端设计师提升编码效率

    对于前端设计师来说,Chrome 浏览器绝对是开发过程中不可缺少的利器:不仅仅是因为 Chrome 自带的功能强大的 devtool,更是因为 Chrome 有…

    • 十款Chrome扩展帮助前端设计师提升编码效率
    • 十款Chrome扩展帮助前端设计师提升编码效率
    • 十款Chrome扩展帮助前端设计师提升编码效率
    • 十款Chrome扩展帮助前端设计师提升编码效率
    稀土圈 · 发布于 2016-08-05 · 浏览 1631 · 评论 0

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    Vincent

    这个人比较懒,什么都没有填写!

    19 文章
    0 评论
    人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 3765

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 3585

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 3809

    图片素材

    关注 图片素材

    文章 29463 · 浏览 3018

    高清图片

    关注 高清图片

    文章 26530 · 浏览 3259

    更多 推荐作者

    关注 秋天的孤寂

    文章 99 · 评论 0

    关注 倾听寂寞

    文章 83 · 评论 0

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 走了留下什么

    文章 110 · 评论 0

    关注 凉城梦镜

    文章 79 · 评论 0

    关注 過往溫柔

    文章 98 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

    感谢您对问说网的支持,提出您在使用过程中遇到的问题或宝贵建议,您的反馈对我们产品的完善有很大帮助。

    您的反馈我们已收到!

    感谢您提供的宝贵意见,我们会在1-2个工作日,通过您留下的联系方式将处理结果反馈给您!