当前位置: 首页 > news >正文

建设苏州旅游网站的方案策划书四合一营销型网站

建设苏州旅游网站的方案策划书,四合一营销型网站,外贸流程图详细,邢台市官网在Java中,凡是可能抛出异常的语句,都可以用try ... catch捕获。把可能发生异常的语句放在try { ... }中,然后使用catch捕获对应的Exception及其子类。 使用try ... catch ... finally时: 多个catch语句的匹配顺序非常重要&#xf…

在Java中,凡是可能抛出异常的语句,都可以用try ... catch捕获。把可能发生异常的语句放在try { ... }中,然后使用catch捕获对应的Exception及其子类。

使用try ... catch ... finally时:

  • 多个catch语句的匹配顺序非常重要,子类必须放在前面;

  • finally语句保证了有无异常都会执行,它是可选的;

  • 一个catch语句也可以匹配多个非继承关系的异常。

多catch语句

可以使用多个catch语句,每个catch分别捕获对应的Exception及其子类。JVM在捕获到异常后,会从上到下匹配catch语句,匹配到某个catch后,执行catch代码块,然后不再继续匹配。

简单地说就是:多个catch语句只有一个能被执行。例如:

public static void main(String[] args) {try {process1();process2();process3();} catch (IOException e) {System.out.println(e);} catch (NumberFormatException e) {System.out.println(e);}
}

存在多个catch的时候,catch的顺序非常重要:子类必须写在前面

例如:

public static void main(String[] args) {
    try {
        process1();
        process2();
        process3();
    } catch (IOException e) {
        System.out.println("IO error");
    } catch (UnsupportedEncodingException e) { // 永远捕获不到
        System.out.println("Bad encoding");
    }
}

对于上面的代码,UnsupportedEncodingException异常是永远捕获不到的,因为它是IOException的子类。当抛出UnsupportedEncodingException异常时,会被catch (IOException e) { ... }捕获并执行。

因此,正确的写法是把子类放到前面

public static void main(String[] args) {
    try {
        process1();
        process2();
        process3();
    } catch (UnsupportedEncodingException e) {
        System.out.println("Bad encoding");
    } catch (IOException e) {
        System.out.println("IO error");
    }
}

finally语句

无论是否有异常发生,如果我们都希望执行一些语句,例如清理工作,怎么写?

可以把执行语句写若干遍:正常执行的放到try中,每个catch再写一遍。例如:

public static void main(String[] args) {try {process1();process2();process3();System.out.println("END");} catch (UnsupportedEncodingException e) {System.out.println("Bad encoding");System.out.println("END");} catch (IOException e) {System.out.println("IO error");System.out.println("END");}
}

上述代码无论是否发生异常,都会执行System.out.println("END");这条语句

那么如何消除这些重复的代码?Java的try ... catch机制还提供了finally语句finally语句块保证有无错误都会执行。上述代码可以改写如下:

public static void main(String[] args) {try {process1();process2();process3();} catch (UnsupportedEncodingException e) {System.out.println("Bad encoding");} catch (IOException e) {System.out.println("IO error");} finally {System.out.println("END");}
}

注意finally有几个特点:

  1. finally语句不是必须的,可写可不写;
  2. finally总是最后执行。

如果没有发生异常,就正常执行try { ... }语句块,然后执行finally。如果发生了异常,就中断执行try { ... }语句块,然后跳转执行匹配的catch语句块,最后执行finally

可见,finally是用来保证一些代码必须执行的。

某些情况下,可以没有catch,只使用try ... finally结构。例如:

void process(String file) throws IOException {try {...} finally {System.out.println("END");}
}

因为方法声明了可能抛出的异常,所以可以不写catch

捕获多种异常

如果某些异常的处理逻辑相同,但是异常本身不存在继承关系,那么就得编写多条catch子句:

public static void main(String[] args) {try {process1();process2();process3();} catch (IOException e) {System.out.println("Bad input");} catch (NumberFormatException e) {System.out.println("Bad input");} catch (Exception e) {System.out.println("Unknown error");}
}

因为处理IOExceptionNumberFormatException的代码是相同的,所以我们可以把它两用‘|’合并到一起:

public static void main(String[] args) {try {process1();process2();process3();} catch (IOException | NumberFormatException e) { // IOException或NumberFormatExceptionSystem.out.println("Bad input");} catch (Exception e) {System.out.println("Unknown error");}
}
http://www.yayakq.cn/news/528337/

相关文章:

  • 网站设计公司需要什么资质手机ppt制作软件免费app
  • 搜狗站长管理平台wordpress写网站教程
  • 自动建站网站系统域名注册个免费网站
  • 青岛网站建设情况seo站长之家
  • 网站建设如何敲图标代码做花瓶的网站
  • 网站建设的需求是什么江苏盐城网站开发
  • 建设一个网站用什么搭建python语言特点有哪些
  • 上海哪家网站建得好深圳住房建设官方网
  • 门户网站建设中存在的问题做慧聪网价格网站价格
  • 公司建设网站的优势个人可以架设网站吗
  • dz网站后台海外广告投放是干嘛的
  • 一个网站的欢迎页怎样做深圳建筑工地招聘信息
  • 网站建设开公司现在好做吗wordpress的链接
  • 沧州好的做网站的公司注册大创网
  • 企业自建网站营销论文哪些网站专做自媒体的
  • 莱州网站建设青岛华夏商务网大学生心里健康网站设计与建设
  • 网站开发和推广方案宽带技术网网站
  • 微信扫一扫登录网站如何做成都建设网站分享
  • 专业做影楼招聘网站有哪些如何创建网页链接
  • 网站建设需要什么教材网站负责人 法人
  • 网站编辑器做段落空格网页设计展望怎么写
  • 给手机开发网站吗中国安能深圳建设公司
  • 新农村建设评论网站网站建设有几大板块
  • 网站开发学习步骤成都到西安需要核酸检测吗
  • 怎么做网站解析网站首页html代码
  • 江苏省建设监理协会网站房产网站开发文档
  • 商业网站建设的目的微信公众号托管代运营
  • physon可以做网站代理公司注册企业
  • 新昌县住房和城乡建设局网站刷seo排名
  • seo网站优化详解简单响应式网站